Dynamically modifying live video streams for participant devices in digital video rooms

ABSTRACT

This disclosure describes a video room system that can efficiently and flexibly generate and facilitate video rooms for video chatting between participant devices by prioritizing video streams to provide to participant devices based on performance parameters. For example, the video room system can provide different video room streams to different participant devices based on the performance parameters of the participant devices. In addition, the video room system can customize or tailor video room streams based on identifying dominant speaker devices, determining connections between participant devices as indicated by a social graph of a social networking system, and/or based on join methods utilized by participant devices to join a video room.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/196,704, filed on Mar. 9, 2021, which claims the benefit of andpriority to provisional Application No. 63/014,931, filed on Apr. 24,2020. Each of the aforementioned applications is hereby incorporated byreference in its entirety.

BACKGROUND

Advancements in software and hardware platforms have led to a variety ofimprovements in systems that connect client devices across networks. Forexample, digital communication systems are now able to facilitate videocalls between client devices for face-to-face communication over longdistances. Some digital communication systems have even developed thatenable access by groups of two or more client devices of different types(e.g., mobile and desktop) to connect within a common video conference.

Despite these advances however, conventional digital communicationsystems continue to suffer from a number of disadvantages, particularlyin their efficiency and flexibility. In particular, many conventionaldigital communication systems inefficiently utilize or consume computingresources of client devices participating in video chats. For example,some conventional systems require an excessive amount of processingpower, memory, and battery life on the part of client devices to processand display video feeds or streams from other client devices within thevideo chat. Indeed, conventional systems often distribute video streamsacross client devices within a common video chat, which grows moretaxing on the processors, batteries, and network bandwidths of theclient devices as the number of devices in the video chat grows larger.

In addition to being inefficient, some conventional digitalcommunication systems are also inflexible. For instance, someconventional systems rigidly provide a uniform experience for all clientdevices within a common video chat. As mentioned above, this approachnot only places an overwhelming burden on client devices andtransmission networks, but this inflexible uniformity can also result ina degraded user experience. Due to the rigid nature of many conventionalsystems in providing video streams to client devices, these conventionalsystems prevent many client devices from presenting clear, effectivevideo chat interfaces.

Thus, there are disadvantages with regard to conventional digitalcommunication systems.

SUMMARY

One or more embodiments described herein provide benefits and solve oneor more of the foregoing or other problems in the art with systems,methods, and non-transitory computer readable media that can efficientlyand flexibly generate and facilitate digital video rooms betweenparticipant devices by prioritizing video streams based on performanceparameters. More specifically, the disclosed systems can generate avideo room and can facilitate video chatting between participant deviceswithin the video room. Further, the disclosed systems can determineperformance parameters associated with participant devices participatingin the video room and can modify video room streams based on respectiveperformance parameters of the participant devices. For example, thedisclosed systems can provide video room streams to a participant deviceby selecting a subset of live video streams received from otherparticipant devices to provide to the participant device. By providing asubset of live video streams to a participant device based onperformance parameters of the participant device, the disclosed systemscan efficiently and flexibly facilitate video chatting within a videoroom.

Additional features and advantages of the present application will beset forth in the description which follows, and in part will be obviousfrom the description, or may be learned by the practice of such exampleembodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description refers to the drawings briefly described below.

FIG. 1 illustrates a block diagram of an environment for implementing avideo room system in accordance with one or more embodiments.

FIG. 2 illustrates example participant devices displaying differentvideo room streams in accordance with one or more embodiments.

FIG. 3 illustrates a sequence of acts for generating and providing videoroom streams to participant devices based on performance parameters andother factors in accordance with one or more embodiments.

FIG. 4 illustrates a diagram of determining join methods for participantdevices in accordance with one or more embodiments.

FIG. 5 illustrates a diagram of determining performance parameters for aparticipant device in accordance with one or more embodiments.

FIG. 6 illustrates a diagram of identifying a dominant speaker device inaccordance with one or more embodiments.

FIG. 7 illustrates an example diagram of providing live video streams toparticipant devices in accordance with one or more embodiments.

FIG. 8 illustrates a moderator control interface in accordance with oneor more embodiments.

FIG. 9 illustrates a participant device displaying a peephole option forviewing participants in a video room in accordance with one or moreembodiments.

FIG. 10 illustrates an example schematic diagram of a computing deviceincluding various components of a video room system in accordance withone or more embodiments.

FIG. 11 illustrates an example flow of acts for generating and providingvideo room streams to participant devices based on performanceparameters in accordance with one or more embodiments.

FIG. 12 illustrates a block diagram of an example computing device inaccordance with one or more embodiments.

FIG. 13 illustrates an example network environment of a networkingsystem in accordance with one or more embodiments.

FIG. 14 illustrates a social graph in accordance with one or moreembodiments.

DETAILED DESCRIPTION

One or more embodiments described herein provide benefits and solve oneor more of the foregoing or other problems in the art with a video roomsystem that can efficiently and flexibly generate and facilitate videorooms between participant devices by prioritizing video streams toprovide to participant devices based on performance parameters. As partof facilitating video chatting between participant devices participatingin a video room, the video room system can provide different video roomstreams to different participant devices based on the performanceparameters of the participant devices. For example, the video roomsystem can provide a first subset of live video streams to includewithin a first video room stream for a first participant device and canprovide a second subset of live video streams to include within a secondvideo room stream for a second participant device. The video room systemcan determine performance parameters associated with the firstparticipant device and the second participant device which can indicatehow many (and/or which specific) live video streams to include withinthe respective video room streams. In addition to performanceparameters, the video room system can customize or tailor video roomstreams based on identifying dominant speaker devices, determiningconnections between participant devices as indicated by a social graphof a social networking system, and/or based on join methods utilized byparticipant devices to join a video room.

As mentioned, the video room system can generate and facilitate adigital video room for video chatting between participant devices. Inparticular, the video room system can receive an indication from aparticipant device (e.g., a creator device) to generate a digital orvirtual space for participant devices to communicate by receiving andproviding video and audio information amongst other participant devicesin the video room. In some embodiments, the video room system maintainsa video room for a particular period of time, leaving it open forcome-and-go access by participant devices with or without the creatordevice being present.

As part of facilitating a video room, the video room system can providevideo room streams to participant devices participating in the videoroom. More specifically, the video room system can provide video roomstreams that include one or more live video streams received from otherparticipant devices in the video room. For example, the video roomsystem can receive live video streams from all participant devices inthe video room and can select particular (and/or a number of) live videostreams to provide to each participant device based on performanceparameters (or other factors) associated with the participant devices.Thus, the video room system can provide different video room streams todifferent participant devices in the same video room.

To elaborate, the video room system can provide a first subset of livevideo streams to a first participant device and can provide a secondsubset of live video streams to a second participant device within thesame video room. In addition, the video room system can determineperformance parameters for the first participant device and the secondparticipant device. Based on the performance parameters, the video roomsystem can modify the first subset of live video streams and modify thesecond subset of live video streams to provide video room streams inaccordance with the performance of the first participant device and thesecond participant device.

As mentioned, the video room system can determine performance parametersof participant devices. In particular, the video room system candetermine performance parameters that indicate how many live videostreams a particular participant device can decode and/or display at agiven time. For example, the video room system can determine performanceparameters such as processing capacity, bandwidth, battery life, screensize, and/or an access platform by which the participant device isaccessing the video room.

In some embodiments, the video room system monitors performanceparameters to identify or detect changes in performance parameters overtime. For instance, the video room system can identify changes tobattery life of a participant device over time. As another example, thevideo room system can monitor changes to network bandwidth of aparticipant device over time. Based on monitoring the performanceparameters, the video room system can dynamically modify video roomstreams provided to participant devices. Specifically, the video roomsystem can add or remove live video streams to provide to participantdevices based on performance parameters to maintain at least a thresholdvideo chat quality (e.g., audio quality, framerate, and/or resolution)and/or to maintain less than a threshold consumption of participantdevice resources.

In addition to modifying based on performance parameters, the video roomsystem can dynamically modify live video streams provided as part of avideo room stream based on other factors as well. For example, the videoroom system can determine join methods by which participant devicesaccessed a video room. In some embodiments, the video room systemmodifies a video room stream for a participant device that accessed thevideo room via a shared video room invite to include additional livevideo streams. In these or other embodiments, the video room systemmodifies a video room stream for a participant device that accessed thevideo room via a video room option that was automatically surfaced tothe participant device (e.g., within a social networking feed) toinclude fewer live video streams.

Further, the video room system can determine connections betweenparticipant devices (or between user accounts associated with theparticipant devices) as indicated by nodes and edges of a social graph.Particularly, the video room system can determine a closeness of aconnection between two or more participant devices (or betweenrespective user accounts of users operating the participant devices).Based on the closeness of the connection between the participantdevices, the video room system can modify the video room stream providedto the participant devices to include more or fewer live video streams.For example, the video room system can determine a connection between ajoining participant device and a creator participant device (and/orother participant devices within the video room) to determine how manyand/or which specific live video streams to provide to the joiningparticipant device. In some embodiments, the video room system providesmore live video streams to participant devices with closer connectionsthan participant devices with farther connections.

In addition (or alternatively) to determining connections betweenparticipant devices, the video room system can modify video room streamsbased on determining dominant speaker devices. In particular, the videoroom system can determine one or more dominant speaker devices within avideo room by monitoring audio output received from the participantdevices within the video room. For instance, the video room system canidentify a dominant speaker device from among a plurality of participantdevices within a video room as a participant device from which the videoroom system receives audio data that meets or exceeds a threshold volumeamplitude sustained over a period of time (e.g., the most recent 3seconds, the most recent 5 seconds, the most recent 30 seconds, or theduration of the video room). In some embodiments, the video room systemdiscerns between garbage audio or noise and verbal or other meaningfulaudio, and the video room system filters out noise to only considermeaningful audio in the determination of dominant speaker devices.Additional detail regarding determining dominant speaker devices isprovided below with reference to the figures.

As suggested above, the video room system can provide several advantagesover conventional digital communication systems. In particular, thevideo room system can improve efficiency over conventional digitalcommunication systems. While may conventional systems inefficientlyutilize computing resources of client devices by distributing videostreams uniformly across all client devices within a video chat, thevideo room system can require fewer computing resources (e.g.,processing power, memory, and battery life) on the part of participantdevices (and server devices) within a video room by selectivelyproviding subsets of live video streams to participant devices. Indeed,the video room system can achieve this improved efficiency by providinglive video streams to participant devices based on performanceparameters of the participant devices as well as connections betweenparticipant devices and/or join methods by which the participant devicesaccess the video room. The efficiency improvements of the video roomsystem are especially pronounced for video rooms with large numbers(e.g., 50) of participant devices, where the video room system'sselective providing of live video streams exhibits marked improvement inperformance over the more taxing, less selective stream handling anddecoding methods of conventional systems.

In addition to improving efficiency, the video room system can alsoimprove flexibility over conventional digital communication systems. Asopposed to many conventional systems that provide a uniform experiencefor all client devices, regardless of device capabilities (or otherfactors), the video room system can provide different subsets of livevideo streams to different participant devices within a common videoroom to customize video room streams for each participant device. Thus,the video room system provides video room streams that are not only lesstaxing on participant devices but that are also tailored for eachparticipant device for a smooth, satisfying user experience. Not onlyare the video room streams tailored for each participant device, but thevideo room system provides additional improved flexibility overconventional systems by dynamically modifying video room streamsprovided to participant devices (e.g., as performance parameters changeover time).

As indicated by the foregoing discussion, the present disclosureutilizes a variety of terms to describe features and advantages of thevideo room system. For example, as used herein, the term “video room”refers to a digital or virtual space for participant devices to connectfor transmission of audio and video information as part of a video chat.In some embodiments, a video room includes a unique uniform resourcelocator (“URL”) within the Internet that designates the digital spaceaccessible by participant devices. A video room can facilitate videochatting between a threshold number (e.g., 50 or 100) of participantdevices. A video room can remain open for a threshold period of time(without video room activity) or until a moderator device disablesand/or locks the video room. Rather than being tied to the timeframe ofa meeting or some other event, a video room can remain open for severaldays, weeks, or months, thereby allowing participant devices to come andgo to and from the video room for impromptu interactions amongst them.

As mentioned, the video room system can generate and provide a videoroom stream to a participant device within a video room. As used here,the term “video room stream” refers to a presentation of two or morelive video streams together in a single interface (e.g., where the livevideo streams are captured by separate participant devices engaged in avideo chat within a video room). For example, a video room stream caninclude a presentation of a first live video stream captured by a firstparticipant device and a second live video stream captured by a secondparticipant device. Relatedly, the term “live video stream” refers toaudio and/or video data captured by a participant device and distributedto other participant devices within a video room. For example, eachparticipant device can capture and provide a respective live videostream.

As mentioned, the video room system can modify a video room stream basedon performance parameters associated with a participant device. As usedherein, the term “performance parameter” refers to a parameter, acharacteristic, or a metric that indicates or represents a performancecapacity, a capability, or a functionality of a participant device. Forexample, a performance parameter can include a remaining battery life, atotal battery capacity, a processing capacity, a bandwidth (e.g., anetwork capacity), or an access platform. The term “access platform”refers to an application or a software platform utilized by aparticipant device to access a video room. In particular, a participantdevice utilizes an access platform to access and display a video roomincluding a video room stream including one or more live video streams.An access platform can include a mobile application, a mobile browser, adesktop application, a desktop browser, or some other softwareapplication.

As mentioned, the video room system can customize or modify a video roomstream based on a join method associated with a participant device. Asused herein, the term “join method” refers to user selection of anaccess point or an entry point that a participant device utilizes togain access to a video room. For example, a join method can include aselection of a video room invite (e.g., a link for a video room URL)shared by a creator device (or some other participant device withpermission to access the video room) and/or can include a selection of avideo room option automatically surfaced within a social networkingfeed. Indeed, the video room system can automatically surface a videoroom option within a social networking feed displayed on a participantdevice based on a connection between the participant device (or a useraccount associated with the participant device) and one or more otherparticipant devices within the video room (e.g., the creator device). Insome embodiments, the video room system can provide more live videostreams to a participant device that joins via a first join method(e.g., selection of a shared video room invite) and can provide fewerlive video streams to a participant device that joins via a second joinmethod (e.g., selection of a surfaced video room option).

In some embodiments, the video room system modifies video room streamsbased on determining or identifying one or more dominant speakerdevices. As used herein, the term “dominant speaker device” refers to aparticipant device categorized, identified, or classified as having arelatively stronger, louder, clearer, or consistent audio signal (e.g.,a greater relative measure of spoken audio). The video room system candetermine a dominant speaker device within a video room by determiningthat audio data satisfies one or more factors. Indeed, the video roomsystem can identify a dominant speaker device based on one or morefactors relating to the audio data received from participant deviceswithin a video room. For example, the video room system can identify adominant speaker device as a participant device that provides audio datathat satisfies a threshold average volume amplitude over a thresholdperiod of time. As another example, the video room system can identify adominant speaker device as a participant device that provides a highestaverage volume amplitude over a particular period of time, as comparedto other participant devices in the video room.

In one or more embodiments, the video room system can identify ordetermine a moderator device from among participant devices within avideo room and can assign moderator controls to the moderator device. Asused herein, the “moderator device” refers to a participant devicegranted one or more moderator controls (e.g., privileges to control ormodify a video room). In particular, a moderator device can controlvarious aspects of a video room, as designated by moderator controlsassigned to the moderator device. Relatedly, the term “moderatorcontrols” refers to one or more digital privileges, rights, features, orfunctions for modifying characteristics of a video room. Moderatorcontrols can include controls such as locking a video room, excluding orejecting participant devices from a video room, disabling a video room,limiting a number of participant devices that can access a video room,enabling and disabling screen sharing, and/or muting particularparticipant devices within the video room.

As suggested, the video room system can determine trustworthinessratings for participant devices to identify a moderator device for avideo room. As used herein, the term “trustworthiness rating” refers toa score or a rating that indicates a level of trustworthiness associatedwith a participant device (or with a user account of a user operating aparticipant device). The video room system can determine atrustworthiness rating for a participant device based on a number offactors including join methods by which the participant devices access avideo room, report histories associated with the participant devices(e.g., reports of posting or sharing bad or inappropriate content),video room histories (e.g., numbers of join attempts and/or numbers ofvideo rooms joined), abnormal behavior (e.g., creating excessive numbersof video rooms), a completeness of a user profile for a user account,and/or an age of a user account.

In some embodiments, the video room system generates and provides apeephole option for display on a participant device (or a prospectiveparticipant device). As used herein, the term “peephole option” refersto a user selectable option or interface element that is selectable todisplay a visual representation of participants (associated withparticipant devices) already within a video room (even though the deviceutilizing the peephole option is not yet participating in the videoroom). Upon receiving an indication of user selection of a peepholeoption, the video room system can provide a visual representation ofparticipants for display on a device.

Additional detail regarding the video room system will now be providedwith reference to the figures. For example, FIG. 1 illustrates aschematic diagram of an example environment for implementing a videoroom system 102 in accordance with one or more embodiments. An overviewof the video room system 102 is described in relation to FIG. 1.Thereafter, a more detailed description of the components and processesof the video room system 102 is provided in relation to the subsequentfigures.

As shown in FIG. 1, the environment includes server(s) 106, participantdevices 108 a-108 n, and a network 112. Each of the components of theenvironment can communicate via the network 112, and the network 112 maybe any suitable network over which computing devices can communicate.Example networks are discussed in more detail below in relation to FIGS.12 and 13.

As mentioned, the environment includes participant devices 108 a-108 n.The participant devices 108 a-108 n can be any of a variety of computingdevices, including a smartphone, a tablet, a smart a television, adesktop computer, a laptop computer, a virtual reality device, anaugmented reality device, or some other computing device as described inrelation to FIGS. 12 and 13. The participant devices 108 a-108 n canhave various performance parameters indicating respective performancecapacities of the participant devices 108 a-108 n. The participantdevices 108 a-108 n can receive user input from users in the form ofuser actions such as touch gestures, clicks, etc., in relation to userinterface elements displayed as part of the video room application 110(or some other application). For example, the participant devices 108a-108 n can receive user input to join a video room and/or to interactwithin a video room. In some embodiments, the participant devices 108a-108 n are associated with a user of the social networking system 104,where users associated with the participant devices 108 a-108 n havesocial media accounts or user accounts registered with the socialnetworking system 104. In addition to receiving input, the participantdevices 108 a-108 n can also provide information pertaining to userinput to the server(s) 106. In turn, the video room system 102 on theserver(s) 106 can receive user input information from the participantdevices 108 a-108 n to indicate actions within the video roomapplication 110 for creating a video room, moderating users within avideo room, and distributing live video streams to the participantdevices 108 a-108 n.

As shown, the participant devices 108 a-108 n include a video roomapplication 110. In particular, the video room application 110 may be aweb application, a native application installed on the participantdevices 108 a-108 n (e.g., a mobile application, a desktop application,a web-based browser application, etc.), or a cloud-based applicationwhere all or part of the functionality is performed by the server(s)106. The video room application 110 can have various functions forcommunicating with other participant devices 108 a-108 n (e.g.,transmitting and receiving audio and video data) and for displayinginformation such as a video room interface for presenting a video roomstream. In some embodiments, the participant devices 108 a-108 n includeadditional applications such as a social networking application for asocial networking interface including social networking feeds such as anactivity feed or a newsfeed.

As illustrated in FIG. 1, the environment includes the server(s) 106which houses the video room system 102 as part of a social networkingsystem 104. The server(s) 106 may generate, store, process, receive, andtransmit electronic data, such as performance parameters, userinteraction information, social networking information, and live videostreams. For example, the server(s) 106 can transmit data to theparticipant devices 108 a-108 n to provide a video room interface viathe video room application 110. In some embodiments, the server(s) 106comprises a content server. The server(s) 106 can also comprise anapplication server, a communication server, a web-hosting server, asocial networking server, a video communication server, or a digitalcommunication management server.

In some embodiments, though not illustrated in FIG. 1, the environmentmay have a different arrangement of components and/or may have adifferent number or set of components altogether. For example, theparticipant devices 108 a-108 n may communicate directly with the videoroom system 102, bypassing the network 112. Additionally, the video roomsystem 102 can include one or more additional databases (e.g., a socialmedia account database) housed on the server(s) 106 or elsewhere in theenvironment. In some embodiments, all or part of the video room system102 can be located on, and implemented by, one or more devices withinthe environment. For example, the video room system 102 can beimplemented by one or more of the server(s) 106, and/or one or more ofthe participant devices 108-108 n.

As mentioned, the video room system 102 can provide video room streamsto participant devices within a video room. In particular, the videoroom system 102 can provide different video room streams to differentparticipant devices, with different live video streams displayed on thevarious participant devices within the video room. FIG. 2 illustrates aparticipant device 108 a and a participant device 108 b participating inthe same video room and displaying different video room streams inaccordance with one or more embodiments.

As illustrated in FIG. 2, the video room system 102 generates andprovides a first video room stream 202 for display on the participantdevice 108 a. In addition, the video room system 102 generates andprovides a second video room stream 204 for display on the participantdevice 108 b. Indeed, the participant device 108 a displays the videoroom stream 202 including five total live video streams, one captured bythe participant device 108 a itself and four other live video streamscaptured by other participant devices within the video room (e.g., theparticipant device 108 b and three others). In addition, the participantdevice 108 b displays the video room stream 204 including three totallive video streams, one captured by the participant device 108 b itselfand two other live video streams captured by other participant deviceswithin the video room (e.g., the participant device 108 a and oneother). Thus, the video room system 102 can provide different live videostreams to different participant devices within the same video room.

To generate and provide the video room streams 202 and 204 to theparticipant devices 108 a and 108 b, the video room system 102 candetermine performance parameters associated with the participant devices108 a and 108 b. In particular, the video room system 102 can determinedifferent performance parameters for the participant device 108 a thanfor the participant device 108 b and can thus provide different livevideo streams to the each of the participant devices 108 a and 108 b. Insome embodiments, the video room system 102 determines factors such associal networking connections and/or join methods as part of modifyingvideo room streams. FIG. 3 illustrates providing and modifying videoroom streams based on performance parameters and other factors inaccordance with one or more embodiments.

As illustrated in FIG. 3, the video room system 102 performs an act 302to generate a video room. In particular, the video room system 102generates a video room by generating a URL (or other indicator) thatdesignates a digital space for connecting participant devices (e.g., theparticipant devices 108 a and 108 b). For example, the video room system102 generates a video room in response to user interaction to generate avideo room (e.g., via a participant device).

In addition, the video room system 102 performs an act 304 to addparticipant devices to the video room. More specifically, the video roomsystem 102 adds participant devices such as the participant devices 108a and 108 b. To add a participant device to the video room, the videoroom system 102 receives an indication of user selection of a video roomlink in the form of a shared video room link or a surfaced video roomoption.

In some embodiments, the video room system 102 provides video room linksto participant devices. Particularly, the video room system 102 sharesvideo room invites (or enables a participant device to share video roominvites) by generating a shareable video room link based on user inputto invite others to join the video room. For example, the video roomsystem 102 shares a selectable video room invite within a messagethread. As another example, the video room system 102 automaticallysurfaces a video room option for display within a social networking feedof a participant device. Indeed, the video room system 102 determinesconnections between participant devices (or between user accounts) andsurfaces a video room option based on the connections.

In addition, the video room system 102 tracks or determines the joinmethods of each participant device that joins a video room. For example,the video room system 102 determines that the participant device 108 ajoins the video room via user interaction with a shared video roominvite. Further, the video room system 102 determines that theparticipant device 108 b joins the video room via user interaction witha video room option that the video room system 102 automaticallysurfaces within a social networking feed associated with the participantdevice 108 b.

As further illustrated in FIG. 3, in some embodiments, the video roomsystem 102 performs an act 306 to determine connections betweenparticipant devices. For instance, the video room system 102 determinesconnections between all participant devices within a common video room.To determine connections between participant devices (or between useraccounts for user associated with the participant devices), the videoroom system 102 determines whether the participant devices areassociated with user accounts within the social networking system 104and, for participant device associated with user accounts within thesocial networking system 104, determines affinities based on nodes andedges of a social graph. For example, the video room system 102determines affinities based on relationships or levels of interestbetween participant devices, as indicated by friends lists, interactionsbetween participant devices (or between user accounts), and similaritiesin subject matter or content of interest. Indeed, as used herein, a“connection” between two participant device or between two user accountscan refer to an affinity between the participant devices or between theuser accounts within a social graph. For a participant device notassociated with a user account within the social networking system 104,the video room system 102 determines that no connection exists for theparticipant device (or that the participant device has a defaultconnection).

In some embodiments, the video room system 102 determines a connectionbetween a joining participant device and a creator device (e.g., aparticipant device that creates a video room). In at least oneembodiment, the video room system 102 determines, for a givenparticipant device, connections with all other participant deviceswithin a video room and selects a strongest or closest connection as arepresentative connection for the participant device. In one or moreembodiments, the video room system 102 determines an aggregateconnection for each participant device by determining a combinedconnection (e.g., a weighted average of connections to other participantdevices in the video room).

In addition, the video room system 102 determines closeness of theconnections between participant devices. More specifically, the videoroom system 102 determines closeness based on factors such as time thattwo user accounts have been friends, a number and/or frequency ofcommunications between participant devices, and/or a number of common orshared friends between the user accounts. As used herein, “closeness”can refer to an affinity coefficient, as set forth in further detailbelow. Indeed, additional detail regarding determining connections andcloseness of the connections based on social network affinity isprovided below with reference to FIG. 14.

As further illustrated in FIG. 3, the video room system 102 performs anact 308 to provide video room streams to participant devices. Inparticular, the video room system 102 provides each provider devicewithin a video room a video room stream for display, each video roomstream including one or more live video streams. For instance, the videoroom system 102 provides the video room stream 202 to the participantdevice 108 a, and the video room system 102 provides the video roomstream 204 to the participant device 108 b.

In some embodiments, the video room system 102 determines performanceparameters before performing the act 308 to provide video room streams.To elaborate, the video room system 102 accesses device specificationsand/or performs one or more performance tests to determine performanceparameters of a participant device. For example, the video room system102 tests connectivity speed or bandwidth of a participant device,remaining battery life of the participant device, processing capacity ofthe participant device, and further determines an access platform bywhich the participant device is accessing the video room. Based on theperformance parameters for each participant device, the video roomsystem 102 selects live video streams to provide to the participantdevices. For instance, the video room system 102 provides more livevideo streams to participant devices with higher performance parametersand provides fewer live video streams to participant devices with lowerperformance parameters.

As shown, the video room system 102 further performs an act 310 tomonitor performance parameters for participant devices. Moreparticularly, the video room system 102 continuously (or periodically)monitors performance parameters associated with each participant devicewithin a video room to detect changes. For example, the video roomsystem 102 repeats one or more performance parameter tests such asnetwork test, a processing capacity test, or a battery life test. Insome embodiments, the video room system 102 periodically requestsindications of performance parameters from a participant device,whereupon the participant device provides indications of all requestedperformance parameters. Thus, in some embodiments, the video room system102 causes a participant device to perform diagnostics to determineperformance parameters to provide to the video room system 102. Bymonitoring performance parameters in this way, the video room system 102maintains an up-to-date measure of performance capabilities ofparticipant devices (e.g., as network connectivity changes, asprocessing capacity changes, or as battery life changes). Additionaldetail regarding determining performance parameters is provided belowwith reference to subsequent figures.

In some embodiments, the video room system 102 performs an act 312 todetermine or identify one or more dominant speaker devices.Particularly, the video room system 102 determines a dominant speakerdevice as a participant device from which the video room system 102receives at least a threshold amount (e.g., duration) of voice audioover a given time period. For example, the video room system 102monitors audio data for the participant devices within a video room anddetermines which participant devices are capturing voice data fromusers. The video room system 102 further compares the voice data forparticipant devices to identify a single (or a top number of)participant device(s) that is/are capturing more voice audio than otherparticipant devices. In some embodiments, the video room system 102identifies a dominant speaker device as a participant device from whichaudio data having at least a threshold average volume amplitude (ofvoice audio) for a threshold period of time is received. In these orother embodiments, the video room system 102 identifies a participantdevice with the most recently captured voice audio as a dominant speakerdevice. In addition, the video room system 102 continuously comparesaudio data received from participant devices to update dominant speakerdevices. Additional detail regarding determining dominant speakerdevices is provided below with reference to subsequent figures.

As illustrated in FIG. 3, the video room system 102 further performs anact 314 to modify video room streams. For instance, the video roomsystem 102 determines to modify the video room streams based ondetermining that a video room includes at least a threshold number ofparticipant devices. The video room system 102 dynamically modifies(e.g., modifies in real time or near real time based on updated changes)video room streams based on performance parameters of participantdevices. In some embodiments, the video room system 102 modifies videoroom streams further based on join methods of participant devices,connections between participant device, and/or identifying dominantspeaker devices. The video room system modifies video room streams byadding (e.g., providing additional) and/or removing (e.g., refrainingfrom or ceasing providing) live video streams for participant devices.Thus, the video room system 102 provides different live video streams todifferent participant devices within a video room.

As mentioned, the video room system 102 modifies video room streamsbased on performance parameters. More specifically, the video roomsystem 102 reduces or increases a number of live video streams toprovide to participant devices based on their respective performanceparameters. For example, the video room system 102 provides more livevideo streams to the participant device 108 a than to the participantdevice 108 b because the video room system 102 determines higherperformance parameters for the participant device 108 a than for theparticipant device 108 b. As another example, the video room system 102reduces or increases a live video stream quality for one or more livevideo streams (e.g., to provide a higher-resolution version or alower-resolution version of a live video stream) provided to aparticipant device based on performance parameters. In some embodiments,the video room system 102 determines that the performance parameters ofa given participant device are adequate for providing only a single livevideo stream to the participant device. In these or other embodiments,the video room system 102 determines that the performance parameters ofa participant device are too low for providing any live video streams.For these devices, the video room system 102 provides live audio streamsby identifying and selecting one or more live audio streams based onperformance parameters, join methods, connections, and identifyingdominant speaker devices (as described herein in relation to live videostreams).

Indeed, in certain implementations, the video room system 102 limits anumber of live video streams and/or live audio streams for one or moreparticipant devices. For example, the video room system 102 determinesperformance parameters of the participant devices. Based on theperformance parameters, the video room system 102 customizes a number oflive video streams and/or live audio streams individually provided tothe respective participant devices (e.g., where live video streamsrequire higher performance parameters than live audio streams). In someembodiments, the video room system 102 converts a live video stream to alive audio stream (e.g., by extracting only audio data) to provide to aparticipant device with performance parameters that fail to satisfy athreshold measure of performance.

As an example, the video room system 102 determines that a firstparticipant device has high performance capabilities (that satisfy ahigher threshold performance) and provides a larger number of videostreams. In addition, the video room system 102 determines a mid-levelperformance capability (to satisfy a lower threshold performance) for asecond participant device and provides a reduced number of live videostreams along with a number of live audio streams (in lieu ofcorresponding live video streams). Further, the video room system 102determines a lower performance capability (failing to satisfy athreshold performance) for a third participant device and provides nolive video streams and a reduced number of live audio streams.

In some embodiments, the video room system 102 modifies video roomstreams based on join methods in addition (or alternatively) toperformance parameters. For example, performance parameters permitting,the video room system 102 provides more live video streams toparticipant devices that join via a shared video room invite than forparticipant devices that join via a surfaced video room option. In someembodiments, the video room system 102 modifies video room streams byprioritizing which live video streams to provide to participant devicesbased on join methods. For instance, the video room system 102prioritizes (e.g., is more likely to provide) live video streamsreceived from participant devices that join a video room via a sharedvideo room invite. Indeed, the video room system 102 is less likely toprovide live video streams received from participant devices that join avideo room via a surfaced video room option.

In one or more embodiments, the video room system 102 modifies videoroom streams based on connections between participant devices (e.g.,connections within a social graph of the social networking system 104).Particularly, the video room system 102 modifies a video room stream byproviding more live video streams (performance parameters permitting) toparticipant devices with stronger or closer connections. Conversely, thevideo room system 102 provides fewer live video streams to participantdevices with weaker or farther connections. In some embodiments, thevideo room system 102 determines that a connection of a participantdevice is below a connection closeness threshold, and the video roomsystem 102 thus provides only live audio streams to the participantdevice.

In some embodiments, the video room system 102 modifies video roomstreams based on dominant speaker devices. More specifically, the videoroom system 102 is more likely to provide live video streams receivedfrom participant devices that are identified as dominant speakerdevices. In cases where the video room system 102 identifies multipledominant speaker devices, the video room system 102 is more likely toprovide live video streams from one or more of the dominant speakerdevices (e.g., a most dominant speaker device or all dominant speakerdevices).

Along these lines, the video room system 102 further modifies video roomstreams by dropping audio (e.g., refraining from providing audio data)for live video streams where a user is not talking. Indeed, the videoroom system 102 determines whether a user is talking based on audioand/or video analysis of a live video stream. Upon determining that theuser is not talking, the video room system 102 removes, or refrains fromproviding, audio information together with the video information of thelive video stream. The video room system 102 further monitors the livevideo stream for changes and modifies the live video stream based ondetected changes to, for example, provide audio data for the live videostream when the user begins talking. Dropping audio information in thisway further saves computing resources on the part of participant devicesby alleviating the need to decode and process additional audioinformation for live video streams that are not capturing voice audio inthe first place.

In one or more embodiments, the video room system 102 prioritizes livevideo streams for participant devices that are capturing video. Indeed,one or more participant devices may have video turned off, and the videoroom system 102 determines that the streams received from theseparticipant devices are less of a priority to provide to otherparticipant devices as part of a video room stream. Thus, the video roomsystem 102 is more likely to provide live video streams received fromparticipant devices that are capturing video than for participantdevices that are only capturing audio. Similarly, the video room system102 is more likely to provide live video streams received fromparticipant devices that are capturing both video and audio than forparticipant devices that are muted (or are not capturing audio).

Based on the above factors, the video room system 102 provides differentlive video streams to different participant devices. In one or moreembodiments, the video room system 102 bases the video room streamprovided to a particular participant device primarily on performanceparameters. In other words, the video room system 102 determines thatperformance parameters for a participant device are sufficient toprovide a particular number of live video streams to the participantdevice. To determine the particular number of live video streams, thevideo room system 102 selects live video streams based on a combination(e.g., a weighted combination) of other factors including join method,connection closeness, and dominant speaker devices. For example, thevideo room system 102 weights dominant speaker devices most heavily andconnections least heavily among the factors.

Additionally, as the video room system 102 detects changes inperformance parameters for a participant device, the video room system102 reduces or increases the number of live video streams provided tothe participant device (e.g., by identifying those live video streamsreceived from participant devices with the highest weighted combinationsof factors). For a given participant device, the video room system 102determines live video stream scores for live video streams received fromother participant device within the video room. For instance, the videoroom system 102 determines live video stream scores as the weightedcombinations of factors (e.g., the weighted combination of connectioncloseness, join method, and dominant speaker devices) associated witheach participant device. Thus, the video room system 102 selects livevideo streams to provide to the given participant device by identifyingthose live video streams with higher live video stream scores. In someembodiments, the video room system 102 determines live audio streamscores based on the same or similar criteria.

As an example, the video room system 102 determines both a number oflive video streams (and/or live audio streams) to provide to aparticipant device and also determines which live video streams (and/orlive audio streams) to provide from among those within the video room.Indeed, the video room system 102 determines performance parameters fora participant device and determines a number of live video streamsand/or live audio streams to provide to the participant device based onthe performance parameters. In addition, the video room system 102selects the determined number of live video streams and/or live audiostreams to provide from among those within the video room. Specifically,the video room system 102 selects from among the available live videostreams based on the live video stream scores.

As mentioned, the video room system 102 can track or determine joinmethods by which participant devices join a video room. In particular,the video room system 102 can determine whether a participant devicejoins a video room via a shared video room invite or via a surfacedvideo room option that is not expressly shared to the participantdevice. FIG. 4 illustrates the participant device 108 a joining a videoroom 406 via a first join method and the participant device 108 bjoining the video room 406 via a second join method in accordance withone or more embodiments. As mentioned above, the video room system 102provides different live video streams (and/or different numbers of livevideo streams) to participant devices based on respective join methods.

As illustrated in FIG. 4, the video room system 102 receives anindication of user selection of a shared video room invite 402 from theparticipant device 108 a. Indeed, the video room system 102 receives arequest to join the video room 406, where the request includesinformation indicating that the request originated from the shared videoroom invite 402. For example, a creator device or some other participantdevice with permission to share video room invites for the video room406 shares the video room invite 402 within a message thread thatincludes the participant device 108 a. In response to user interactionselecting the video room invite 402, the video room system 102 adds theparticipant device 108 a to the video room 406 and identifies the joinmethod for the participant device 108 a as selection of the video roominvite 402.

As further illustrated in FIG. 4, the video room system 102 receives anindication of user selection of a surfaced video room option 404. Inparticular, the video room system 102 receives a request to join thevideo room 406, where the request includes information indicating thatthe request originated from the video room option 404. For example, thevideo room system 102 surfaces the video room option 404 within a socialnetworking feed presented on the participant device 108 b. Indeed, thevideo room system 102 determines a connection between the participantdevice 108 b and a creator device for the video room 406 (or anotherparticipant device within the video room), and the video room system 102automatically (e.g., without user input) surfaces the video room option404 for display within the social networking feed on the participantdevice 108 b based on the connection. In response to user interactionselecting the video room option 404, the video room system 102 adds theparticipant device 108 b to the video room 406 and identifies the joinmethod as selection of the surfaced video room option 404. In one ormore embodiments, the video room system 102 determines additional oralternative join methods such as selection of a video room optionprovided via an email, a text message, or within some other messagingapplication.

As mentioned, the video room system 102 can determine and monitorperformance parameters for participant devices within a video room(e.g., within the video room 406). In particular, the video room system102 can monitor performance parameters to detect changes over time formodifying video room streams provided to participant devices. FIG. 5illustrates a diagram of performance parameters associated with theparticipant device 108 a in accordance with one or more embodiments.

As illustrated in FIG. 5, the video room system 102 determines aperformance parameter in the form of screen dimensions 502 of theparticipant device 108 a. Specifically, the video room system 102requests and receives an indication from the participant device 108 athat includes the screen dimensions 502 in pixels or other units (e.g.,centimeters or inches) for height and width. In some embodiments, thevideo room system 102 determines a device type associated with theparticipant device 108 a upon allowing the participant device 108 a intothe video room 406, which information includes the screen dimensions ofthe participant device 108 a.

Based on the screen dimensions 502, the video room system 102 modifiesthe video room stream provided to the participant device 108 a. Forexample, the video room system 102 provides more live video streams(other performance parameters permitting) to a participant device thathas a larger screen and provides fewer live video streams to aparticipant device that has a smaller screen. Indeed, to maintainefficacy and clarify of the video room interface on each participantdevice within the video room 406, the video room system 102 modifiesvideo room streams based on respective screen dimensions of theparticipant devices.

As illustrated in FIG. 5, the video room system 102 determines andmonitors a battery level or a battery life 504 for the participantdevice 108 a. In particular the video room system 102 determines thebattery life 504 by requesting and receiving an indication of batteryinformation from the participant device 108 a. The video room system 102further monitors the battery life 504 to detect changes in how muchbattery life is remaining in the battery of the participant device 108a. For example, the video room system 102 periodically requests andreceives battery information from the participant device 108 a. In someembodiments, the video room system 102 determines a total batterycapacity in addition to the remaining battery life 504.

Based on the battery life 504 (or the total battery capacity), the videoroom system 102 modifies the video room stream provided to theparticipant device 108 a. For example, the video room system 102provides fewer and fewer live video streams to the participant device108 a (and/or replaces live video streams with live audio streams) asthe battery life 504 reduces over time. Thus, the video room system 102saves or preserves battery life of the participant device 108 a byautomatically adjusting a video room stream to require less batterypower to decode and display live video streams. In some embodiments, thevideo room system 102 provides an initial number of live video streamsfor a fully charged battery and reduces the number as the battery life504 decreases. In one or more embodiments, the video room system 102determines a larger initial number of live video streams for participantdevices with larger batteries that have larger total battery capacities.

In addition, the video room system 102 determines and monitors abandwidth 506 for the participant device 108 a. In particular, the videoroom system 102 determines an amount of information that the participantdevice 108 a can send and receive via a network connection. Forinstance, the video room system 102 determines a level of networkconnectivity including a signal strength and a network speed for anetwork connection of the participant device 108 a. To determine thebandwidth 506, the video room system 102 requests and receives networkinformation from the participant device 108 a. In some embodiments, thevideo room system 102 performs a network test to determine the bandwidth506 by determining an upload and/or a download speed of the participantdevice 108 a. Similarly, in some embodiments the video room system 102determines the type of network connection and modifies the video streamsaccordingly (e.g., greater video streams for wi-fi connections or 5Gconnections compared to 3G connections).

The video room system 102 further monitors the bandwidth 506 for changesover time. For example, if the participant device 108 a moves to an areawith a weaker signal strength or hands off from a wi-fi connection to amobile data connection (e.g., a slower data connection), the video roomsystem 102 modifies a video room stream accordingly. Indeed, the videoroom system 102 modifies the video room stream provided to theparticipant device 108 a in real time to reduce or increase the numberof live video streams provided to the participant device 108 a based onthe bandwidth 506.

As further illustrated in FIG. 5, the video room system 102 determinesand monitors a processing capacity 508 of the participant device 108 a.In particular, the video room system 102 determines the processingcapacity 508 including a processor speed, a number of processor threads,a memory capacity, and a number of streams that the processor can decodesimultaneously. For example, the video room system 102 determines theprocessing capacity 508 by requesting and receiving processinginformation from the participant device 108 a. In some embodiments, thevideo room system 102 determines the processing capacity 508 byperforming (or by causing the participant device 108 a to perform) aprocessing test.

The video room system 102 further monitors the processing capacity 508to detect any changes in processing capacity over time. For example, theparticipant device 108 a may begin (or stop) performing other taskswhich alters the processing capacity 508 available for decoding anddisplaying live video streams for the video room 406. As anotherexample, the participant device 108 a may enter a power saver mode(e.g., if battery life is low) which limits a processing capacity of theparticipant device 108 a. Based on the processing capacity 508, thevideo room system 102 provides more or fewer live video streams to theparticipant device 108 a. For instance, the video room system 102provides more live video streams to a participant device with higherprocessing capacity and provides fewer live video streams to aparticipant device with lower processing capacity.

As further illustrated in FIG. 5, the video room system 102 determinesan access platform 510 for the participant device 108 a. In particular,the video room system 102 determines an access platform 510 that theparticipant device 108 a utilizes the access the video room. Forexample, the video room system 102 determines the access platform 510 byrequesting and receiving access platform information that indicateswhether the participant device 108 a is accessing the video room 406 viaa mobile application, a mobile browser, a desktop application, or adesktop browser (including information indicating the specificapplication or browser used as the access platform 510). In someembodiments, the video room system 102 determines the access platform510 upon (or before) allowing the participant device 108 to access thevideo room 406 as part of a verification or an authentication process.

Based on the access platform 510, the video room system 102 customizesor modifies the video room stream provided to the participant device 108a. More specifically, the video room system 102 modifies the number oflive video streams to provide to the participant device 108 a based onthe access platform 510. For instance, if the participant device 108 ais accessing the video room 406 via a mobile browser (e.g., a mobilebrowser that is less integrable with external systems), the video roomsystem 102 reduces the number of video streams provided to theparticipant device 108 a. Indeed, some mobile browsers have lessfunctional or fewer accessible APIs for providing live video streams fordisplay, and the video room system 102 adjusts a video room streamaccordingly. If the participant device 108 a is accessing the video roomvia a mobile application (e.g., the video room application 110), on theother hand, the video room system 102 provides more live video roomstreams because the functionality of the mobile application facilitateseasier streaming and decoding of live video streams.

In some embodiments, the video room system 102 generates a performanceparameter score for the participant device 108 a (and for otherparticipant devices within the video room 406). More specifically, thevideo room system 102 generates a performance parameter score thatindicates a measure or a rating of how many live video streams theparticipant device 108 a can decode at a given time. The video roomsystem 102 generates a performance parameter score by combining two ormore of the performance parameters 502-510. For instance, the video roomsystem 102 generates a weighted combination (e.g., a weighted linearcombination) of the performance parameters 502-510. In some embodiments,the video room system 102 weights the performance parameters 502-510equally. In other embodiments, the video room system 102 weights someperformance parameters such as the access platform 510 more heavily thanother performance parameters such as the screen dimensions 502. Thevideo room system 102 further modifies the performance parameter scorebased on monitoring changes for the various performance parameters502-510 to adjust the number of live video streams provided to theparticipant device 108 a.

By determining and monitoring the performance parameters 502-510, thevideo room system 102 improves efficiency over conventional systems.Indeed, by selectively providing live video streams, the video roomsystem 102 reduces the computation requirements for the participantdevice 108 a to decode and display live video streams. Thus, not only isthe video room system 102 more efficient than conventional systems, butthe video room system 102 also flexibly tailors video room streams foreach participant device within a video room. Further, the video roomsystem 102 flexibly modifies video room streams for each participantdevice as performance parameters of the participant devices change overtime.

As mentioned, the video room system 102 can determine or identifydominant speaker devices within a video room (e.g., the video room 406).In particular, the video room system 102 can identify one or moreparticipant devices as dominant speaker devices based on audio datareceived from the participant devices participating in a video room.FIG. 6 illustrates a representation of identifying a dominant speakerdevice in accordance with one or more embodiments.

As illustrated in FIG. 6, the video room system 102 receives audio datafrom three participant devices 108 b-108 d within the video room 406.Indeed, FIG. 6 represents the audio data with waveforms below therespective participant devices 108 b-108 d. As shown, the video roomsystem 102 receives audio data from the participant device 108 b withlow volume amplitude. The video room system 102 also receives audio datafrom the participant device 108 d with slightly higher volume amplitudethan the audio data from the participant device 108 b. Additionally, thevideo room system 102 receives audio data from the participant device108 c with the highest volume amplitude among the participant devices108 b-108 d.

Based on the audio data illustrated in FIG. 6, the video room system 102identifies the participant device 108 c as a dominant speaker device.Indeed, the video room system 102 compares the audio data received fromthe participant devices 108 b-108 d to determine that the audio datafrom the participant device 108 c has the highest volume amplitude. Insome embodiments, the video room system 102 determines that the audiodata from the participant device 108 c has the highest average volumeamplitude. Indeed, the video room system averages the volume amplitudeof audio received over a threshold period of time (e.g., a most recent 5seconds or a most recent 30 seconds). In these or other embodiments, thevideo room system 102 compares the average volume amplitude to athreshold volume amplitude. Thus, video room system 102 identifies theparticipant device 108 c as a dominant speaker device because theaverage volume amplitude of the audio data received from the participantdevice 108 c meets or exceeds the threshold volume amplitude.

In addition, (or alternatively), the video room system 102 analyzesaudio data received from the participant devices 108 b-108 d todetermine which audio data corresponds to voice audio or verbal audioand which audio data does not. Particularly, the video room system 102identifies audio data that fluctuates like speech patterns. In someembodiments, the video room system 102 analyzes video data together withaudio data to determine which audio data corresponds to voice data. Forinstance, the video room system 102 utilizes a voice isolation model(e.g., an off-the-shelf voice isolation model or a customized voiceisolation model) or some other machine-learning-based model to isolatevoices from other audio. Indeed, the video room system 102 accesses anapplication programming interface (“API”) or a library of machinelearning models to utilize a machine learning model trained for audioclassification (e.g., to classify voice audio separately from otheraudio).

In some cases, the video room system 102 analyzes video data to identifymouth movement of a user operating the participant device 108 c andcompares the mouth movement with audio data. Indeed, the video roomsystem 102 receives audio data from the participant device 108 c tocompare with the mouth movement to determine that the audio dataincludes voice audio.

Additionally, the video room system 102 filters out noise from receivedaudio data. To elaborate, the video room system 102 filters out orignores audio data from participant devices that are capturing noiseaudio (e.g., audio other than voice audio). Thus, even if the video roomsystem 102 receives audio data from a participant device that has highvolume amplitude but that consists mostly or entirely of backgroundnoise, the video room system 102 refrains from identifying theparticipant device as a dominant speaker device.

As mentioned above, the video room system 102 can modify and customizevideo room streams for individual participant devices. In particular,the video room system 102 can identify live video streams to provide toparticular participant devices based on factors such as performanceparameters, connection closeness, join methods, and identification ofdominant speaker devices. FIG. 7 illustrates a diagram of providingdifferent live video streams to different participant devices inaccordance with one or more embodiments.

As illustrated in FIG. 7, the video room system 102 provides differentnumbers of live video streams to the participant device 108 a and to theparticipant device 108 b. Indeed, participant device 108 a displays fivelive video streams provided by the video room system 102, such as thelive video stream 702, the live video stream 704, the live video stream706, the live video stream 708, and the live video stream 714.Additionally, the participant device 108 b displays three live providedby the video room system 102, such as the live video stream 710, thelive video stream 712, and live video stream 714.

Indeed, the video room system 102 provides five live video streams702-708 and 714 to the participant device 108 a and provides three livevideo streams 710-714 to the participant device 108 b. For example, thevideo room system 102 determines differences between performanceparameters of the participant device 108 a and performance parameters ofthe 108 b to provide more live video streams to the participant device108 a. Particularly, the video room system 102 determines higherperformance parameters for the participant device 108 a than for theparticipant device 108 b and therefore provides more live video streamsto the participant device 108 a and fewer live video streams to theparticipant device 108 b.

In certain implementations, the video room system 102 customizes whichlive video streams and/or live audio streams to provide to whichparticipant devices based on join methods of the participant devices.For instance, the video room system 102 selects live video streams toprovide to one participant device based on join methods of otherparticipant devices. In some cases, the video room system 102 determinesthat live video streams from participant devices that join the videoroom via certain join methods are prioritized over live video streamsfrom participant devices that join via other methods.

For example, if the video room system 102 determines that theparticipant device 108 b joins the video room via a video room optionexpressly shared with the participant device 108 b, then the video roomsystem 102 is more likely to provide the live video stream from theparticipant device 108 b to the participant device 108 a (depending onthe performance parameters of the participant device 108 a).Comparatively, if the video room system 102 determines that aparticipant device 108 c joins the video room via a video room optionsurfaced within a social networking interface, then the video roomsystem 102 is less likely to provide the live video stream received fromthe participant device 108 c to the participant device 108 a.

Additionally, the video room system 102 determines join methods andconnection closeness associated with the participant device 108 a andthe participant device 108 b. For instance, the video room system 102determines that the participant device 108 a joins the video room 406via user selection of a shared video room invite. In addition, the videoroom system 102 determines that the participant device 108 b joins thevideo room 406 via user selection of a video room option surfaced withina social networking feed (and not expressly shared with the participantdevice 108 b). The video room system 102 thus provides more live videoroom streams to the participant device 108 a than to the participantdevice 108 b based on their respective join methods.

Further, the video room system 102 determines that the user account ofthe user operating the participant device 108 a has a closer socialnetworking connection to the video room 406 than the user account of theuser operating the participant device 108 b. To elaborate, the videoroom system 102 determines that the participant device 108 b has nosocial networking account or has farther/weaker connections with acreator device (or other participant devices) of the video room 406.Thus, the video room system 102 provides more live video streams to theparticipant device 108 a and provides fewer live video streams to theparticipant device 108 b.

In addition, the video room system 102 determines or identifies dominantspeaker devices. For example, the video room system 102 modifies videoroom streams provided to the participant device 108 a and theparticipant device 108 b to include a live video stream from a dominantspeaker device. In some embodiments, the video room system 102 modifiesor customizes a video room stream to change how live video streams aredisplayed. For instance, the video room system 102 provides video roomstreams that cause the participant device 108 a and the participantdevice 108 b to display the live video stream 714 received from adominant speaker device as the largest or more prominent live videostream. As another example, the video room system 102 provides a videoroom stream that causes the participant device 108 a to display a livevideo stream received from a participant device that has a closestconnection with the participant device 108 a.

In at least one embodiment, the video room system 102 enablesparticipant device (e.g., the participant device 108 a or theparticipant device 108 b) to select live video streams for display (orto prioritize for display, performance parameters permitting). Forexample, the video room system 102 provides a visual representation ofparticipants within the video room 406 for display on the participantdevice 108 a from which a user can select to indicate live video streamsto prioritize. Upon receiving an indication of user selection of one ormore of the participants, the video room system 102 prioritizes the livevideo streams received from the corresponding participant devices withinthe video room 406 in providing and/or modifying the video room streamfor the participant device 108 a.

In one or more embodiments, the video room system 102 identifies ordetermines a moderator device for a participant device. In particular,the video room system 102 can identify a moderator device and can assignmoderator controls to the moderator device to control certain aspects ofa video room (e.g., the video room 406). FIG. 8 illustrates an examplemoderator control interface 802 including moderator controls inaccordance with one or more embodiments.

As illustrated in FIG. 8, the video room system 102 the participantdevice 108 a displays a moderator control interface 802 that includesmoderator controls for controlling certain aspects of the video room406. Indeed, the moderator control interface 802 includes moderatorcontrols such as locking the video room 406 (“Lock Room”), booting orremoving participant device from the video room 406 (“Remove”), anddisabling the video room (“End Room”). Other moderator controls includelimiting a number of participant devices that can access a video room,enabling and disabling screen sharing, and/or muting particularparticipant devices within the video room.

In some embodiments, the video room system 102 identifies a creatordevice as a moderator device. In other embodiments, or in cases where acreator device has not yet joined (or has left) the video room 406, thevideo room system 102 identifies a different participant device as amoderator device. To identify the participant device 108 a as amoderator device, the video room system 102 determines a trustworthinessrating for the participant device 108 a. In particular, the video roomsystem 102 determines a trustworthiness rating based on various factorsassociated with the participant device 108 a (or associated with a useraccount of a user operating the participant device 108 a).

For example, the video room system 102 determines a join methodassociated with the participant device 108 a. In some embodiments, thevideo room system 102 determines higher trustworthiness ratings forparticipant devices that join a video room via user selection of ashared video room link than for participant devices that join the videoroom via other join methods.

In addition, the video room system 102 determines a report historyassociated with the participant device 108 a. For instance, the videoroom system 102 determines or accesses a history of reports made of auser account associated with the participant device 108 a for posting orsharing inappropriate content. Further, the video room system 102determines a video room history associated with the participant device108 a. Indeed, the video room system 102 determines or accesses ahistory of join attempts and creations of video rooms for a user accountassociated with the participant device 108 a. If the video room system102 determines that the user account has attempted more join attemptsthan a threshold number and/or has created more than a threshold numberof video rooms (and/or has shared a video room invite more than athreshold number of times), then the video room system 102 determines alower trustworthiness rating for the participant device 108 a.

In some embodiments, the video room system 102 determines an age and/ora completeness of a user profile associated with a user account as partof a trustworthiness rating. Particularly, the video room system 102determines how much information the user profile includes, where a morecomplete user profile corresponds to a higher trustworthiness rating.Similarly, the video room system 102 determines a higher trustworthinessrating for an older user account.

In one or more embodiments, the video room system 102 determines atrustworthiness rating based on a combination of the above factors. Thevideo room system 102 further identifies the participant device 108 a asa moderator device (e.g., in addition to, or alternatively to, anotherparticipant device or a creator device) based on determining that thetrustworthiness rating for the participant device 108 a meets or exceedsa trustworthiness rating threshold. In cases where the video room system102 identifies more than one participant device with trustworthinessratings that satisfy the trustworthiness rating threshold, the videoroom system 102 compares the trustworthiness ratings of thoseparticipant devices to identify a participant device with a highesttrustworthiness rating to assign as the moderator device.

In some embodiments, the video room system 102 provides a peepholeoption that is selectable to view participants within a video room(e.g., the video room 406) without joining or accessing the video room.In particular, the video room system 102 can generate and provide aselectable peephole option together with (e.g., as part of) a sharedvideo room invite. FIG. 9 illustrates the client device 901 displaying avideo room invite 902 that includes a peephole option 903 in accordancewith one or more embodiments.

As illustrated in FIG. 9, the video room system 102 provides a videoroom invite 902 shared with a client device 901 (e.g., a client devicethat has not yet joined and is not yet participating in the video room)by a participant device within the video room 406. Indeed, the videoroom system 102 provides the video room invite 902 for display within amessage thread of the video room application 110. As shown, the videoroom invite 902 includes a peephole option 903 that is selectable toview participants within the video room 406.

Indeed, based on receiving an indication of user selection of thepeephole option 903, the video room system 102 provides the participantinterface 904 for display on the client device 901. In addition, thevideo room system 102 does not add the client device 901 to the videoroom 406 based on user selection of the peephole option 903. Rather, thevideo room system 102 provides the participant interface 904 for displayto present a visual representation of the participants who are in thevideo room 406 without adding the client device 901 to the video room406. In one or more embodiments, the video room system 102 shows thecreator device that the client device 901 is viewing who is in the videoroom 406, but the video room system 102 does not show other participantdevices within the video room 406 that the client device 901 is viewingwho is in the video room 406.

In some embodiments, the video room system 102 only provides thepeephole option 903 to the client device 901 upon determining that theclient device 901 has a connection closeness with a creator device (orsome other participant device within the video room 406) that satisfiesa connection closeness threshold. In these or other embodiments, thevideo room system 102 only provides the peephole option 903 as part of ashared video room invite (e.g., the video room invite 902) and does notprovide a peephole option with a video room option that is surfacedwithin a social networking feed.

Looking now to FIG. 10, additional detail will be provided regardingcomponents and capabilities of the video room system 102. Specifically,FIG. 10 illustrates an example schematic diagram of the video roomsystem 102 on an example computing device 1000 (e.g., one or more of theparticipant devices 108 a-108 n and/or the server(s) 106). As shown inFIG. 11, the video room system 102 may include a video room streammanager 1002, a performance parameter manager 1004, a join methodmanager 1006, a dominant speaker device manager 1008, and a storagemanager 1010.

As mentioned, the video room system 102 includes video room streammanager 1002. In particular, the video room stream manager 1002 manages,maintains, generates, provides, presents, displays, modifies, orcustomizes video room streams for participant devices. For example, thevideo room stream manager 1002 provides a video room stream to a firstparticipant device that includes a first subset of live video streamsfrom participant devices within a video room and provides a video roomstream to a second participant device that includes a second subset oflive video streams from participant devices within the video room. Thevideo room stream manager 1002 identifies and selects live video streamsbased on performance parameters, as described herein. In someembodiments, the video room stream manager 1002 identifies and selectslive video streams based on connection closeness, join methods, and/oridentification of dominant speaker devices.

As shown in FIG. 10, the video room system 102 also includes aperformance parameter manager 1004. In particular, the performanceparameter manager 1004 manages, maintains, determines, monitors,detects, or identifies performance parameters for participant deviceswithin a video room. For example, the performance parameter manager 1004determines performance parameters such as processing capacity,bandwidth, screen size, battery life, and access platform, as describedherein.

Additionally, the video room system 102 includes a join method manager1006. In particular, the join method manager 1006 manages, maintains,detects, determines, monitors, or identifies join methods by whichparticipant devices join a video room. For example, the join methodmanager 1006 determines that a first participant device joins a videoroom via user selection of a shared video room invite and that a secondparticipant device joins the video room via user selection of a surfacedvideo room option. In some embodiments, the join method manager 1006further determines connections and connection closeness betweenparticipant devices, as described herein.

As further shown, the video room system 102 includes a dominant speakerdevice manager 1008. In particular, the dominant speaker device manager1008 manages, maintains, determines, assigns, detects, or identifiesdominant speaker devices within a video room. For example, the dominantspeaker device manager 1008 identifies a dominant speaker device basedon analyzing audio data received from participant devices within a videoroom, as described herein.

Further, the video room system 102 includes a storage manager 1010. Inparticular, the storage manager 1010 manages, maintains, receives,provides, stores, accesses, or identifies various information within thedatabase 1012. For example, the storage manager 1010 stores and providesa URL for a video room, performance parameter information forparticipant devices, join methods for participant devices, connectioninformation between participant devices, and indications of dominantspeaker devices.

In one or more embodiments, each of the components of the video roomsystem 102 are in communication with one another using any suitablecommunication technologies. Additionally, the components of the videoroom system 102 can be in communication with one or more other devicesincluding one or more client devices described above. It will berecognized that although the components of the video room system 102 areshown to be separate in FIG. 11, any of the subcomponents may becombined into fewer components, such as into a single component, ordivided into more components as may serve a particular implementation.Furthermore, although the components of FIG. 11 are described inconnection with the video room system 102, at least some of thecomponents for performing operations in conjunction with the video roomsystem 102 described herein may be implemented on other devices withinthe environment.

The components of the video room system 102 can include software,hardware, or both. For example, the components of the video room system102 can include one or more instructions stored on a computer-readablestorage medium and executable by processors of one or more computingdevices (e.g., the computing device 1000). When executed by the one ormore processors, the computer-executable instructions of the video roomsystem 102 can cause the computing device 900 to perform the methodsdescribed herein. Alternatively, the components of the video room system102 can comprise hardware, such as a special purpose processing deviceto perform a certain function or group of functions. Additionally oralternatively, the components of the video room system 102 can include acombination of computer-executable instructions and hardware.

Furthermore, the components of the video room system 102 performing thefunctions described herein may, for example, be implemented as part of astand-alone application, as a module of an application, as a plug-in forapplications including content management applications, as a libraryfunction or functions that may be called by other applications, and/oras a cloud-computing model. Thus, the components of the video roomsystem 102 may be implemented as part of a stand-alone application on apersonal computing device or a mobile device. Alternatively oradditionally, the components of the video room system 102 may beimplemented in any application that allows creation and delivery ofmarketing content to users, including, but not limited to, variousapplications.

FIGS. 1-10, the corresponding text, and the examples provide a number ofdifferent systems, methods, and non-transitory computer readable mediafor generating and providing video room streams to participant devicesbased on performance parameters. In addition to the foregoing,embodiments can also be described in terms of flowcharts comprising actsfor accomplishing a particular result. For example, FIG. 11 illustratesa flowchart of an example sequence of acts in accordance with one ormore embodiments.

While FIG. 11 illustrates acts according to some embodiments,alternative embodiments may omit, add to, reorder, and/or modify any ofthe acts shown in FIG. 11. The acts of FIG. 11 can be performed as partof a method. Alternatively, a non-transitory computer readable mediumcan comprise instructions, that when executed by one or more processors,cause a computing device to perform the acts of FIG. 11. In stillfurther embodiments, a system can perform the acts of FIG. 11.Additionally, the acts described herein may be repeated or performed inparallel with one another or in parallel with different instances of thesame or other similar acts.

FIG. 11 illustrates an example series of acts 1100 for generating andproviding video room streams to participant devices based on performanceparameters. The series of acts 1100 includes an act 1102 of providing afirst video room stream to a first participant device. In particular,the act 1102 can involve providing, for display on a first participantdevice from among a plurality of participant devices participating in avideo room, a first video room stream comprising a first subset of livevideo streams from participant devices of the plurality of participantdevices.

In addition, the series of acts 1100 includes an act 1104 of providing asecond video room stream to a second participant device. In particular,the act 1104 can involve providing, for display on a second participantdevice from among the plurality of participant devices participating inthe video room, a second video room stream comprising a second subset oflive video streams from participant devices of the plurality ofparticipant devices.

As shown, the series of acts 1100 includes an act 1106 of monitoringperformance parameters. In particular, the act 1106 can involvemonitoring performance parameters for the first participant device andthe second participant device. For example, the act 1106 involvesmonitoring two or more of a remaining battery life of the firstparticipant device, a processing capacity of the first participantdevice, a bandwidth associated with the first participant device, or anaccess platform utilized by the first participant device to access thevideo room. In some embodiments, the act 1106 involves monitoring threeor more of a remaining battery life of the first participant device, aprocessing capacity of the first participant device, a bandwidthassociated with the first participant device, or an access platformutilized by the first participant device to access the video room.

Further, the series of acts 1100 includes an act 1108 of dynamicallymodifying the video room streams. In particular, the act 1108 caninvolve, based on monitoring the performance parameters of the firstparticipant device and second participant device, dynamically modifyingthe first subset of live video streams from the participant devices toprovide for the first video room stream and the second subset of livevideo streams from the participant devices to provide for the secondvideo room stream. For example, the act 1108 can include determiningthat the video room includes at least a threshold number of participantdevices and dynamically modifying the first subset of live video streamsand the second subset of live video streams based on determining thatthe video room includes at least the threshold number of participantdevices. In some embodiments, the act 1108 involves dynamicallymodifying the first subset of live video streams and the second subsetof live video streams by adding an additional video stream to firstsubset of live video streams based on determining higher performancefrom the performance parameters for the first participant device andremoving a video stream from the second subset of live video streamsbased on determining lower performance from the performance parametersfor the second participant device.

In some embodiments, the series of acts 1100 includes an act ofdetermining a first join method whereby the first participant devicejoined the video room and a second join method whereby the secondparticipant device joined the video room. The series of acts 1100 canalso include an act of dynamically modifying the first subset of livevideo streams further based on the first join method. For example, theseries of acts 1100 can include an act of adding a new live video streamto the first subset of live video streams based on the first joinmethod. Further, the series of acts 1100 can include an act ofdynamically modifying the second subset of live video streams furtherbased on the second join method. For instance, the series of acts 1100can include an act of removing a live video stream from the secondsubset of live video streams based on the second join method.

The series of acts 1100 can also include an act of identifying adominant speaker device within the video room by monitoring audio outputreceived from the plurality of participant devices participating in thevideo room. In addition, the series of acts 1100 can include an act ofdynamically modifying the first subset of live video streams and thesecond subset of live video streams based on identifying the dominantspeaker device. For example, the series of acts 1100 can include an actof dynamically modify the first subset of live video streams and thesecond subset of live video streams to include a live video streamreceived from the dominant speaker device.

In one or more embodiments, the series of acts 1100 includes an act ofdetermining, from a social graph associated with a social networkingsystem, connections between a first user account associated with thefirst participant device and other user accounts associated with otherparticipant devices from among the plurality of participant devicesparticipating in the video room. In these or other embodiments, theseries of acts 1100 includes an act of dynamically modifying the firstsubset of live video streams to prioritize live video streams based oncloseness of the connections between the first user account associatedwith the first participant device and other user accounts associatedwith other participant devices. For example, the series of acts 1100 caninclude an act of dynamically modifying the first subset of live videostreams to prioritize live video streams received from participantdevices associated with user accounts that are within a thresholdcloseness to the first user account associated with the firstparticipant device.

Further, the series of acts 1100 can include an act of assigning, fromamong the plurality of participant devices within the video room, amoderator device based on trustworthiness ratings associated with theplurality of participant devices. The series of acts 1100 can alsoinclude an act of providing moderator controls to the moderator deviceto moderate the video room.

The series of acts 1100 can include an act of providing, for display onthe first participant device together with a video room option, apeephole option selectable to view participants already within the videoroom without accessing the video room. In addition, the series of acts1100 can include an act of, in response to receiving an indication ofuser selection of the peephole option, providing a visual representationof participants already within the video room for display on the firstparticipant device.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer-executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this description and in the claims, a “cloud-computingenvironment” is an environment in which cloud computing is employed.

FIG. 12 illustrates a block diagram of an example computing device 1200(e.g., the server(s) 106 and/or the participant devices 108 a-108 n)that may be configured to perform one or more of the processes describedabove. One will appreciate that one or more computing devices such asthe computing device 1200 may implement the video room system 102. Asshown by FIG. 12, the computing device 1200 can comprise a processor1202, a memory 1204, a storage device 1206, an I/O interface 1208, and acommunication interface 1210, which may be communicatively coupled byway of a communication infrastructure 1212. While an example computingdevice 1200 is shown in FIG. 12, the components illustrated in FIG. 12are not intended to be limiting. Additional or alternative componentsmay be used in other embodiments. Furthermore, in certain embodiments,the computing device 1200 can include fewer components than those shownin FIG. 12. Components of the computing device 1200 shown in FIG. 12will now be described in additional detail.

In one or more embodiments, the processor 1202 includes hardware forexecuting instructions, such as those making up a computer program. Forexample, to execute instructions, the processor 1202 may retrieve (orfetch) the instructions from an internal register, an internal cache,the memory 1204, or the storage device 1206 and decode and execute them.In one or more embodiments, the processor 1202 may include one or moreinternal caches for data, instructions, or addresses. For example, theprocessor 1202 may include one or more instruction caches, one or moredata caches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inthe memory 1204 or the storage device 1206.

The memory 1204 may be used for storing data, metadata, and programs forexecution by the processor(s). The memory 1204 may include one or moreof volatile and non-volatile memories, such as Random-Access Memory(“RAM”), Read Only Memory (“ROM”), a solid-state disk (“SSD”), Flash,Phase Change Memory (“PCM”), or other types of data storage. The memory1204 may be internal or distributed memory.

The storage device 1206 includes storage for storing data orinstructions. For example, storage device 1206 can comprise anon-transitory storage medium described above. The storage device 1206may include a hard disk drive (HDD), a floppy disk drive, flash memory,an optical disc, a magneto-optical disc, magnetic tape, or a UniversalSerial Bus (USB) drive or a combination of two or more of these. Thestorage device 1206 may include removable or non-removable (or fixed)media, where appropriate. The storage device 1206 may be internal orexternal to the computing device 1200. In one or more embodiments, thestorage device 1206 is non-volatile, solid-state memory. In otherembodiments, the storage device 1206 includes read-only memory (ROM).Where appropriate, this ROM may be mask programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these.

The I/O interface 1208 allows a user to provide input to, receive outputfrom, and otherwise transfer data to and receive data from computingdevice 1200. The I/O interface 1208 may include a mouse, a keypad or akeyboard, a touch screen, a camera, an optical scanner, networkinterface, modem, another known I/O devices or a combination of such I/Ointerfaces. The I/O interface 1208 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, the I/O interface 1208 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The communication interface 1210 can include hardware, software, orboth. In any event, the communication interface 1210 can provide one ormore interfaces for communication (e.g., packet-based communication)between the computing device 1200 and one or more other computingdevices or networks. For example, the communication interface 1210 mayinclude a network interface controller (NIC) or network adapter forcommunicating with an Ethernet or other wire-based network or a wirelessNIC (WNIC) or wireless adapter for communicating with a wirelessnetwork, such as a WI-FI.

Additionally, or alternatively, the communication interface 1210 mayfacilitate communications with an ad hoc network, a personal areanetwork (PAN), a local area network (LAN), a wide area network (WAN), ametropolitan area network (MAN), or one or more portions of the Internetor a combination of two or more of these. One or more portions of one ormore of these networks may be wired or wireless. As an example, thecommunication interface 1210 may facilitate communications with awireless PAN (WPAN) (e.g., a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (e.g., a Global System for MobileCommunications (GSM) network), or other suitable wireless network or acombination thereof.

Additionally, the communication interface 1210 may facilitatecommunications across various communication protocols. Examples ofcommunication protocols that may be used include, but are not limitedto, data transmission media, communications devices, TransmissionControl Protocol (“TCP”), Internet Protocol (“IP”), File TransferProtocol (“FTP”), Telnet, Hypertext Transfer Protocol (“HTTP”),Hypertext Transfer Protocol Secure (“HTTPS”), Session InitiationProtocol (“SIP”), Simple Object Access Protocol (“SOAP”), ExtensibleMark-up Language (“XML”) and variations thereof, Simple Mail TransferProtocol (“SMTP”), Real-Time Transport Protocol (“RTP”), User DatagramProtocol (“UDP”), Global System for Mobile Communications (“GSM”)technologies, Code Division Multiple Access (“CDMA”) technologies, TimeDivision Multiple Access (“TDMA”) technologies, Short Message Service(“SMS”), Multimedia Message Service (“MMS”), radio frequency (“RF”)signaling technologies, Long Term Evolution (“LTE”) technologies,wireless communication technologies, in-band and out-of-band signalingtechnologies, and other suitable communications networks andtechnologies.

The communication infrastructure 1212 may include hardware, software, orboth that connects components of the computing device 1200 to eachother. For example, the communication infrastructure 1212 may include anAccelerated Graphics Port (AGP) or other graphics bus, an EnhancedIndustry Standard Architecture (EISA) bus, a front-side bus (FSB), aHYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture(ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, amemory bus, a Micro Channel Architecture (MCA) bus, a PeripheralComponent Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serialadvanced technology attachment (SATA) bus, a Video Electronics StandardsAssociation local (VLB) bus, or another suitable bus or a combinationthereof.

As mentioned above, the video room system 102 can operate as a socialnetworking system in various embodiments. In addition to the descriptiongiven above, a social networking system may enable its users (such aspersons or organizations) to interact with the system and with eachother. The social networking system may, with input from a user, createand store in the social networking system a social media accountassociated with the user. The social media account may includedemographic information, communication-channel information, andinformation on personal interests of the user. The social networkingsystem may also, with input from a user, create and store a record ofrelationships of the user with other users of the social networkingsystem, as well as provide services (e.g. wall posts, photo-sharing,online calendars and event organization, messaging, games, oradvertisements) to facilitate social interaction between or among users.

Also, the social networking system may allow users to post photographsand other multimedia content items to a user's profile page (typicallyknown as “wall posts” or “timeline posts”) or in a photo album, both ofwhich may be accessible to other users of the social networking systemdepending upon the user's configured privacy settings.

FIG. 13 illustrates an example network environment 1300 of a networkingsystem. The network environment 1300 includes a social networking system1302 (e.g., the social networking system 104), a user device 1306, and athird-party system 1308 connected to each other by a network 1304.Although FIG. 13 illustrates a particular arrangement of the socialnetworking system 1302, the user device 1306, the third-party system1308, and the network 1304, this disclosure contemplates any suitablearrangement of the devices, systems, and networks. For example, the userdevice 1306 and the social networking system 1302 may be physically orlogically co-located with each other in whole, or in part. Moreover,although FIG. 13 illustrates a single user device 1306, the socialnetworking system 1302, the third-party system 1308, and the network1304, this disclosure contemplates any suitable number of devices,systems, and networks.

This disclosure contemplates any suitable network. For example, one ormore portions of the network 1304 may include an ad hoc network, anintranet, an extranet, a virtual private network (VPN), a local areanetwork (LAN), a wireless LAN (WLAN), a wide area network (WAN), awireless WAN (WWAN), a metropolitan area network (MAN), a portion of theInternet, a portion of the Public Switched Telephone Network (PSTN), acellular telephone network, or a combination of two or more of these.The network 1304 may include one or more networks.

Links may connect the social networking system 1302, the user device1306, and the third-party system 1308 to the network 1304 or to eachother. In particular embodiments, one or more links include one or morewireline (e.g., Digital Subscriber Line (DSL) or Data Over Cable ServiceInterface Specification (DOC SIS)), wireless (e.g., Wi-Fi or WorldwideInteroperability for Microwave Access (WiMAX)), or optical (e.g.,Synchronous Optical Network (SONET) or Synchronous Digital Hierarchy(SDH)) links. In particular embodiments, one or more links each includean ad hoc network, an intranet, an extranet, a VPN, a LAN, a WLAN, aWAN, a WWAN, a MAN, a portion of the Internet, a portion of the PSTN, acellular technology-based network, a satellite communicationstechnology-based network, another link, or a combination of two or moresuch links. Links need not necessarily be the same throughout thenetwork environment 1300. One or more first links may differ in one ormore respects from one or more second links.

In particular embodiments, the user device 1306 may be an electronicdevice including hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by the userdevice 1306. For example, the user device 1306 may include any of thecomputing devices discussed above in relation to FIG. 12. The userdevice 1306 may enable a network user to access the network 1304. Theuser device 1306 may enable its user to communicate with other usersassociated with other user devices.

In particular embodiments, the user device 1306 may include a webbrowser and may have one or more add-ons, plug-ins, or other extensions(e.g., toolbars). A user at the user device 1306 may enter a UniformResource Locator (URL) or other address directing the web browser to aparticular server (such as server, or a server associated with thethird-party system 1308), and the web browser may generate a HypertextTransfer Protocol (HTTP) request and communicate the HTTP request toserver. The server may accept the HTTP request and communicate to theuser device 1306 one or more Hypertext Markup Language (HTML) filesresponsive to the HTTP request.

The user device 1306 may render a webpage based on the HTML files fromthe server for presentation to the user. For example, webpages mayrender from HTML files, Extensible Hypertext Markup Language (XHTML)files, or Extensible Markup Language (XML) files, according toparticular needs. Such pages may also execute scripts such as thosewritten in JAVASCRIPT, JAVA, combinations of markup language and scriptssuch as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a webpage encompasses one or more corresponding webpagefiles (which a browser may use to render the webpage) and vice versa,where appropriate.

In particular embodiments, the social networking system 1302 may be anetwork-addressable computing system that can host an online network ofusers (e.g., a social networking system or an electronic messagingsystem). In some embodiments, such as the illustrated embodiment, thesocial networking system 1302 implements the video room system 102.

The social networking system 1302 may generate, store, receive, and sendnetworking data, such as user-profile data, concept-profile data, graphinformation (e.g., social-graph information), or other suitable datarelated to the online network of users. The social networking system1302 may be accessed by the other components of network environment 1300either directly or via the network 1304. In particular embodiments, thesocial networking system 1302 may include one or more servers. Eachserver may be a unitary server or a distributed server spanning multiplecomputers or multiple datacenters. Servers may be of various types, suchas web server, news server, mail server, message server, advertisingserver, file server, application server, exchange server, databaseserver, proxy server, another server suitable for performing functionsor processes described herein, or any combination thereof.

In one or more embodiments, each server may include hardware, software,or embedded logic components or a combination of two or more suchcomponents for carrying out the appropriate functionalities implementedor supported by a server. In particular embodiments, the socialnetworking system 1302 may include one or more data stores. Data storesmay be used to store various types of information. In particularembodiments, the information stored in data stores may be organizedaccording to specific data structures. In particular embodiments, eachdata store may be a relational, columnar, correlation, or anothersuitable database. Although this disclosure describes or illustratesparticular types of databases, this disclosure contemplates any suitabletypes of databases. Particular embodiments may provide interfaces thatenable the social networking system 1302, the user device 1306, or thethird-party system 1308 to manage, retrieve, modify, add, or delete, theinformation stored in a data store.

In particular embodiments, the social networking system 1302 may storeone or more social graphs in one or more data stores. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. The social networking system 1302may provide users of the online network of users the ability tocommunicate and interact with other users. In particular embodiments,users may join the online network of users via the social networkingsystem 1302 and then add connections (e.g., relationships) to a numberof other users of the social networking system 1302 whom they want to beconnected to. Herein, the term “friend” may refer to any other user ofthe social networking system 1302 with whom a user has formed aconnection, association, or relationship via the social networkingsystem 1302.

In particular embodiments, the social networking system 1302 may provideusers with the ability to take actions on various types of items orobjects, supported by the social networking system 1302. For example,the items and objects may include groups or social networks to whichusers of the social networking system 1302 may belong, events orcalendar entries in which a user might be interested, computer-basedapplications that a user may use, transactions that allow users to buyor sell items via the service, interactions with advertisements that auser may perform, or other suitable items or objects. A user mayinteract with anything that is capable of being represented in thesocial networking system 1302 or by an external system of thethird-party system 1308, which is separate from the social networkingsystem 1302 and coupled to the social networking system 1302 via thenetwork 1304.

In particular embodiments, the social networking system 1302 may becapable of linking a variety of entities. For example, the socialnetworking system 1302 may enable users to interact with each other aswell as receive content from the third-party systems 1308 or otherentities, or to allow users to interact with these entities through anapplication programming interfaces (API) or other communicationchannels.

In particular embodiments, the third-party system 1308 may include oneor more types of servers, one or more data stores, one or moreinterfaces, including but not limited to APIs, one or more web services,one or more content sources, one or more networks, or any other suitablecomponents, e.g., that servers may communicate with. The third-partysystem 1308 may be operated by a different entity from an entityoperating the social networking system 1302. In particular embodiments,however, the social networking system 1302 and the third-party systems1308 may operate in conjunction with each other to provide socialnetworking services to users of the social networking system 1302 or thethird-party systems 1308. In this sense, the social networking system1302 may provide a platform, or backbone, which other systems, such asthe third-party systems 1308, may use to provide social networkingservices and functionality to users across the Internet.

In particular embodiments, the third-party system 1308 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a user device 1306. For example, content objects mayinclude information regarding things or activities of interest to theuser, such as movie showtimes, movie reviews, restaurant reviews,restaurant menus, product information and reviews, or other suitableinformation. As another example and not by way of limitation, contentobjects may include incentive content objects, such as coupons, discounttickets, gift certificates, or other suitable incentive objects.

In particular embodiments, the social networking system 1302 alsoincludes user-generated content objects, which may enhance a user'sinteractions with the social networking system 1302. User-generatedcontent may include anything a user can add, upload, send, or “post” tothe social networking system 1302. For example, a user communicatesposts to the social networking system 1302 from a user device 1306.Posts may include data such as status updates or other textual data,location information, photos, videos, links, music or other similar dataor media. Content may also be added to the social networking system 1302by a third-party through a “communication channel,” such as a newsfeedor stream.

In particular embodiments, the social networking system 1302 may includea variety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, the social networking system 1302 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. The social networkingsystem 1302 may also include suitable components such as networkinterfaces, security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments, thesocial networking system 1302 may include one or more user-profilestores for storing social media accounts.

A social media account may include, for example, biographic information,demographic information, behavioral information, social information, orother types of descriptive information, such as work experience,educational history, hobbies or preferences, interests, affinities, orlocation. Interest information may include interests related to one ormore categories. Categories may be general or specific. For example, ifa user “likes” an article about a brand of shoes the category may be thebrand, or the general category of “shoes” or “clothing.” A connectionstore may be used for storing connection information about users. Theconnection information may indicate users who have similar or commonwork experience, group memberships, hobbies, educational history, or arein any way related or share common attributes.

The connection information may also include user-defined connectionsbetween different users and content (both internal and external). A webserver may be used for linking the social networking system 1302 to oneor more user device 1306 or one or more the third-party system 1308 viathe network 1304. The web server may include a mail server or othermessaging functionality for receiving and routing messages between thesocial networking system 1302 and one or more user device 1306. AnAPI-request server may allow the third-party system 1308 to accessinformation from the social networking system 1302 by calling one ormore APIs. An action logger may be used to receive communications from aweb server about a user's actions on or off social networking system1302. In conjunction with the action log, a third-party-content-objectlog may be maintained of user exposures to third-party-content objects.A notification controller may provide information regarding contentobjects to a user device 1306.

Information may be pushed to a user device 1306 as notifications, orinformation may be pulled from user device 1306 responsive to a requestreceived from user device 1306. Authorization servers may be used toenforce one or more privacy settings of the users of the socialnetworking system 1302. A privacy setting of a user determines howparticular information associated with a user can be shared. Theauthorization server may allow users to opt in to or opt out of havingtheir actions logged by the social networking system 1302 or shared withother systems (e.g., the third-party system 1308), such as by settingappropriate privacy settings. Third-party-content-object stores may beused to store content objects received from third parties, such as thethird-party system 1308. Location stores may be used for storinglocation information received from user device 1306 associated withusers. Advertisement-pricing modules may combine social information, thecurrent time, location information, or other suitable information toprovide relevant advertisements, in the form of notifications, to auser.

FIG. 14 illustrates example social graph 1400. In particularembodiments, the social networking system 1302 may store one or moresocial graphs 1400 in one or more data stores. In particularembodiments, social graph 1400 may include multiple nodes—which mayinclude multiple user nodes 1402 or multiple concept nodes 1404—andmultiple edges 1406 connecting the nodes. Example social graph 1400illustrated in FIG. 14 is shown, for didactic purposes, in atwo-dimensional visual map representation. In particular embodiments,the social networking system 1302, the user device 1306, or thethird-party system 1308 may access social graph 1400 and relatedsocial-graph information for suitable applications. The nodes and edgesof social graph 1400 may be stored as data objects, for example, in adata store (such as a social-graph database). Such a data store mayinclude one or more searchable or quarriable indexes of nodes or edgesof social graph 1400.

In particular embodiments, a user node 1402 may correspond to a user ofthe social networking system 1302. For example, a user may be anindividual (human user), an entity (e.g., an enterprise, business, orthird-party application), or a group (e.g., of individuals or entities)that interacts or communicates with or over social networking system1302. In particular embodiments, when a user registers for an accountwith the social networking system 1302, the social networking system1302 may create a user node 1402 corresponding to the user and store theuser node 1402 in one or more data stores. Users and user nodes 1402described herein may, where appropriate, refer to registered users anduser nodes 1402 associated with registered users.

In addition, or as an alternative, users and user nodes 1402 describedherein may, where appropriate, refer to users that have not registeredwith the social networking system 1302. In particular embodiments, auser node 1402 may be associated with information provided by a user orinformation gathered by various systems, including the social networkingsystem 1302. For example, a user may provide his or her name, profilepicture, contact information, birth date, sex, marital status, familystatus, employment, education background, preferences, interests, orother demographic information. Each user node of the social graph mayhave a corresponding web page (typically known as a profile page). Inresponse to a request including a user name, the social networkingsystem can access a user node corresponding to the user name, andconstruct a profile page including the name, a profile picture, andother information associated with the user. A profile page of a firstuser may display to a second user all or a portion of the first user'sinformation based on one or more privacy settings by the first user andthe relationship between the first user and the second user.

In particular embodiments, a concept node 1404 may correspond to aconcept. For example, a concept may correspond to a place (e.g., a movietheater, restaurant, landmark, or city); a website (e.g., a websiteassociated with social networking system 1302 or a third-party websiteassociated with a web-application server); an entity (e.g., a person,business, group, sports team, or celebrity); a resource (e.g., an audiofile, video file, digital photo, text file, structured document, orapplication) which may be located within the social networking system1302 or on an external server, such as a web-application server; real orintellectual property (e.g., a sculpture, painting, movie, game, song,idea, photograph, or written work); a game; an activity; an idea ortheory; another suitable concept; or two or more such concepts. Aconcept node 1404 may be associated with information of a conceptprovided by a user or information gathered by various systems, includingthe social networking system 1302. For example, information of a conceptmay include a name or a title; one or more images (e.g., an image of thecover page of a book); a location (e.g., an address or a geographicallocation); a website (which may be associated with a URL); contactinformation (e.g., a phone number or an email address); other suitableconcept information; or any suitable combination of such information. Inparticular embodiments, a concept node 1404 may be associated with oneor more data objects corresponding to information associated withconcept node 1404. In particular embodiments, a concept node 1404 maycorrespond to one or more webpages.

In particular embodiments, a node in the social graph 1400 may representor be represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible to the socialnetworking system 1302. Profile pages may also be hosted on third-partywebsites associated with a third-party system 1308. For example, aprofile page corresponding to a particular external webpage may be theparticular external webpage, and the profile page may correspond to aparticular concept node 1404. Profile pages may be viewable by all or aselected subset of other users. For example, a user node 1402 may have acorresponding user-profile page in which the corresponding user may addcontent, make declarations, or otherwise express himself or herself. Asanother example and not by way of limitation, a concept node 1404 mayhave a corresponding concept-profile page in which one or more users mayadd content, make declarations, or express themselves, particularly inrelation to the concept corresponding to concept node 1404.

In particular embodiments, a concept node 1404 may represent athird-party webpage or resource hosted by the third-party system 1308.The third-party webpage or resource may include, among other elements,content, a selectable or another icon, or another inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. For example, a third-partywebpage may include a selectable icon such as “like,” “check-in,” “eat,”“recommend,” or another suitable action or activity. A user viewing thethird-party webpage may perform an action by selecting one of the icons(e.g., “eat”), causing a user device 1306 to send to the socialnetworking system 1302 a message indicating the user's action. Inresponse to the message, the social networking system 1302 may create anedge (e.g., an “eat” edge) between a user node 1402 corresponding to theuser and a concept node 1404 corresponding to the third-party webpage orresource and store edge 1406 in one or more data stores.

In particular embodiments, a pair of nodes in the social graph 1400 maybe connected to each other by one or more edges 1406. An edge 1406connecting a pair of nodes may represent a relationship between the pairof nodes. In particular embodiments, an edge 1406 may include orrepresent one or more data objects or attributes corresponding to therelationship between a pair of nodes. For example, a first user mayindicate that a second user is a “friend” of the first user. In responseto this indication, the social networking system 1302 may send a “friendrequest” to the second user.

If the second user confirms the “friend request,” social networkingsystem 1302 may create an edge 1406 connecting the first user's usernode 1402 to the second user's user node 1402 in the social graph 1400and store edge 1406 as social-graph information in one or more of datastores. In the example of FIG. 14, social graph 1400 includes an edge1406 indicating a friend relation between user nodes 1402 of user “A”and user “B” and an edge indicating a friend relation between user nodes1402 of user “C” and user “B.” Although this disclosure describes orillustrates particular edges 1406 with particular attributes connectingparticular user nodes 1402, this disclosure contemplates any suitableedges 1406 with any suitable attributes connecting user nodes 1402. Forexample, an edge 1406 may represent a friendship, family relationship,business or employment relationship, fan relationship, followerrelationship, visitor relationship, sub scriber relationship,superior/subordinate relationship, reciprocal relationship,non-reciprocal relationship, another suitable type of relationship, ortwo or more such relationships. Moreover, although this disclosuregenerally describes nodes as being connected, this disclosure alsodescribes users or concepts as being connected. Herein, references tousers or concepts being connected may, where appropriate, refer to thenodes corresponding to those users or concepts being connected in thesocial graph 1400 by one or more edges 1406.

In particular embodiments, an edge 1406 between a user node 1402 and aconcept node 1404 may represent a particular action or activityperformed by a user associated with user node 1402 toward a conceptassociated with a concept node 1404. For example, as illustrated in FIG.14, a user may “like,” “attended,” “played,” “listened,” “cooked,”“worked at,” or “watched” a concept, each of which may correspond to anedge type or subtype. A concept-profile page corresponding to a conceptnode 1404 may include, for example, a selectable “check-in” icon (e.g.,a clickable “check-in” icon) or a selectable “add to favorites” icon.Similarly, after a user clicks these icons, the social networking system1302 may create a “favorite” edge or a “check-in” edge in response to auser's action corresponding to a respective action.

As another example and not by way of limitation, a user (user “C”) maylisten to a particular song using a particular application (e.g., anonline music application). In this case, the social networking system1302 may create a “listened” edge 1406 and a “used” edge (as illustratedin FIG. 14) between user nodes 1402 corresponding to the user andconcept nodes 1404 corresponding to the song and application to indicatethat the user listened to the song and used the application.

Moreover, the social networking system 1302 may create a “played” edge1406 (as illustrated in FIG. 14) between concept nodes 1404corresponding to the song and the application to indicate that theparticular song was played by the particular application. In this case,“played” edge 1406 corresponds to an action performed by an externalapplication on an external audio file. Although this disclosuredescribes particular edges 1406 with particular attributes connectinguser nodes 1402 and concept nodes 1404, this disclosure contemplates anysuitable edges 1406 with any suitable attributes connecting user nodes1402 and concept nodes 1404.

Furthermore, although this disclosure describes edges between a usernode 1402 and a concept node 1404 representing a single relationship,this disclosure contemplates edges between a user node 1402 and aconcept node 1404 representing one or more relationships. For example,an edge 1406 may represent both that a user likes and has used at aparticular concept. Alternatively, another edge 1406 may represent eachtype of relationship (or multiples of a single relationship) between auser node 1402 and a concept node 1404 (as illustrated in FIG. 14between user node 1402 for user “E” and concept node 1404).

In particular embodiments, the social networking system 1302 may createan edge 1406 between a user node 1402 and a concept node 1404 in thesocial graph 1400. For example, a user viewing a concept-profile page(e.g., by using a web browser or a special-purpose application hosted bythe user's user device 1306) may indicate that he or she likes theconcept represented by the concept node 1404 by clicking or selecting a“Like” icon, which may cause the user's user device 1306 to send to thesocial networking system 1302 a message indicating the user's liking ofthe concept associated with the concept-profile page.

In response to the message, the social networking system 1302 may createan edge 1406 between user node 1402 associated with the user and conceptnode 1404, as illustrated by “like” edge 1406 between the user andconcept node 1404. In particular embodiments, the social networkingsystem 1302 may store an edge 1406 in one or more data stores. Inparticular embodiments, an edge 1406 may be automatically formed by thesocial networking system 1302 in response to a particular user action.For example, if a first user uploads a picture, watches a movie, orlistens to a song, an edge 1406 may be formed between user node 1402corresponding to the first user and concept nodes 1404 corresponding tothose concepts. Although this disclosure describes forming particularedges 1406 in particular manners, this disclosure contemplates formingany suitable edges 1406 in any suitable manner.

In particular embodiments, an advertisement may be text (which may beHTML-linked), one or more images (which may be HTML-linked), one or morevideos, audio, one or more other types of files, a suitable combinationof these, or any other suitable advertisement in any suitable digitalformat presented on one or more webpages, in one or more e-mails, or inconnection with search results requested by a user. In addition, or asan alternative, an advertisement may be one or more sponsored stories(e.g., a news-feed or ticker item on the social networking system 1302)

A sponsored story may be a social action by a user (such as “liking” apage, “liking” or commenting on a post on a page, RSVPing to an eventassociated with a page, voting on a question posted on a page, checkingin to a place, using an application or playing a game, or “liking” orsharing a website) that an advertiser promotes, for example, by havingthe social action presented within a predetermined area of a profilepage of a user or other page, presented with additional informationassociated with the advertiser, bumped up or otherwise highlightedwithin news feeds or tickers of other users, or otherwise promoted. Theadvertiser may pay to have the social action promoted. For example,advertisements may be included among the search results of asearch-results page, where sponsored content is promoted overnon-sponsored content.

In particular embodiments, an advertisement may be requested for displaywithin social networking system webpages, third-party webpages, or otherpages. An advertisement may be displayed in a dedicated portion of apage, such as in a banner area at the top of the page, in a column atthe side of the page, in a GUI of the page, in a pop-up window, in adrop-down menu, in an input field of the page, over the top of contentof the page, or elsewhere with respect to the page. In addition, or asan alternative, an advertisement may be displayed within an application.An advertisement may be displayed within dedicated pages, requiring theuser to interact with or watch the advertisement before the user mayaccess a page or utilize an application. For example, the user may viewthe advertisement through a web browser.

A user may interact with an advertisement in any suitable manner. Theuser may click or otherwise select the advertisement. By selecting theadvertisement, the user may be directed to (or a browser or otherapplication being used by the user) a page associated with theadvertisement. At the page associated with the advertisement, the usermay take additional actions, such as purchasing a product or serviceassociated with the advertisement, receiving information associated withthe advertisement, or subscribing to a newsletter associated with theadvertisement. An advertisement with audio or video may be played byselecting a component of the advertisement (like a “play button”).Alternatively, by selecting the advertisement, the social networkingsystem 1302 may execute or modify a particular action of the user.

An advertisement may also include social networking-system functionalitythat a user may interact with. For example, an advertisement may enablea user to “like” or otherwise endorse the advertisement by selecting anicon or link associated with the endorsement. As another example and notby way of limitation, an advertisement may enable a user to search(e.g., by executing a query) for content related to the advertiser.Similarly, a user may share the advertisement with another user (e.g.,through the social networking system 1302) or RSVP (e.g., through thesocial networking system 1302) to an event associated with theadvertisement. In addition, or as an alternative, an advertisement mayinclude a social networking system context directed to the user. Forexample, an advertisement may display information about a friend of theuser within the social networking system 1302 who has taken an actionassociated with the subject matter of the advertisement.

In particular embodiments, the social networking system 1302 maydetermine the social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online network of users,such as users, concepts, content, actions, advertisements, other objectsassociated with the online network of users, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with the third-party systems 1308 or other suitable systems.An overall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, the social networking system 1302 may measureor quantify social-graph affinity using an affinity coefficient (whichmay be referred to herein as “coefficient”). The coefficient mayrepresent or quantify the strength of a relationship between particularobjects associated with the online network of users. The coefficient mayalso represent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action. In this way, a user's future actions maybe predicted based on the user's prior actions, where the coefficientmay be calculated at least in part based on the history of the user'sactions. Coefficients may be used to predict any number of actions,which may be within or outside of the online network of users. Forexample, these actions may include various types of communications, suchas sending messages, posting content, or commenting on content; varioustypes of an observation actions, such as accessing or viewing profilepages, media, or other suitable content; various types of coincidenceinformation about two or more social-graph entities, such as being inthe same group, tagged in the same photograph, checked-in at the samelocation, or attending the same event; or other suitable actions.Although this disclosure describes measuring affinity in a particularmanner, this disclosure contemplates measuring affinity in any suitablemanner.

In particular embodiments, the social networking system 1302 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static, or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. For example, particular user actions may be assigned both a ratingand a weight while a relationship associated with the particular useraction is assigned a rating and a correlating weight (e.g., so theweights total 100%). To calculate the coefficient of a user towards aparticular object, the rating assigned to the user's actions maycomprise, for example, 60% of the overall coefficient, while therelationship between the user and the object may comprise 40% of theoverall coefficient. In particular embodiments, the social networkingsystem 1302 may consider a variety of variables when determining weightsfor various factors used to calculate a coefficient, such as, forexample, the time since information was accessed, decay factors,frequency of access, relationship to information or relationship to theobject about which information was accessed, relationship tosocial-graph entities connected to the object, short- or long-termaverages of user actions, user feedback, other suitable variables, orany combination thereof. For example, a coefficient may include a decayfactor that causes the strength of the signal provided by particularactions to decay with time, such that more recent actions are morerelevant when calculating the coefficient. The ratings and weights maybe continuously updated based on continued tracking of the actions uponwhich the coefficient is based. Any type of process or algorithm may beemployed for assigning, combining, averaging, and so forth the ratingsfor each factor and the weights assigned to the factors. In particularembodiments, the social networking system 1302 may determinecoefficients using machine-learning algorithms trained on historicalactions and past user responses, or data farmed from users by exposingthem to various options and measuring responses. Although thisdisclosure describes calculating coefficients in a particular manner,this disclosure contemplates calculating coefficients in any suitablemanner.

In particular embodiments, the social networking system 1302 maycalculate a coefficient based on a user's actions. The social networkingsystem 1302 may monitor such actions on the online network of users, onthe third-party system 1308, on other suitable systems, or anycombination thereof. Any suitable type of user actions may be tracked ormonitored. Typical user actions include viewing profile pages, creatingor posting content, interacting with content, joining groups, listingand confirming attendance at events, checking-in at locations, likingparticular pages, creating pages, and performing other tasks thatfacilitate social action. In particular embodiments, the socialnetworking system 1302 may calculate a coefficient based on the user'sactions with particular types of content. The content may be associatedwith the online network of users, the third-party system 1308, oranother suitable system. The content may include users, profile pages,posts, news stories, headlines, instant messages, chat roomconversations, emails, advertisements, pictures, video, music, othersuitable objects, or any combination thereof. The social networkingsystem 1302 may analyze a user's actions to determine whether one ormore of the actions indicate an affinity for the subject matter,content, other users, and so forth. For example, if a user may makefrequently posts content related to “coffee” or variants thereof, thesocial networking system 1302 may determine the user has a highcoefficient with respect to the concept “coffee.” Particular actions ortypes of actions may be assigned a higher weight and/or rating thanother actions, which may affect the overall calculated coefficient. Forexample, if a first user emails a second user, the weight or the ratingfor the action may be higher than if the first user views theuser-profile page for the second user.

In particular embodiments, the social networking system 1302 maycalculate a coefficient based on the type of relationship betweenparticular objects. Referencing the social graph 1400, the socialnetworking system 1302 may analyze the number and/or type of edges 1406connecting particular user nodes 1402 and concept nodes 1404 whencalculating a coefficient. For example, user nodes 1402 that areconnected by a spouse-type edge (representing that the two users aremarried) may be assigned a higher coefficient than a user nodes 1402that are connected by a friend-type edge. In other words, depending uponthe weights assigned to the actions and relationships for the particularuser, the overall affinity may be determined to be higher for contentabout the user's spouse than for content about the user's friend.

In particular embodiments, the relationships a user has with anotherobject may affect the weights and/or the ratings of the user's actionswith respect to calculating the coefficient for that object. Forexample, if a user is tagged in a first photo, but merely likes a secondphoto, the social networking system 1302 may determine that the user hasa higher coefficient with respect to the first photo than the secondphoto because having a tagged-in-type relationship with content may beassigned a higher weight and/or rating than having a like-typerelationship with content.

In some embodiments, the social networking system 1302 may calculate acoefficient for a first user based on the relationship one or moresecond users have with a particular object. In other words, theconnections and coefficients other users have with an object may affectthe first user's coefficient for the object. For example, if a firstuser is connected to or has a high coefficient for one or more secondusers, and those second users are connected to or have a highcoefficient for a particular object, the social networking system 1302may determine that the first user should also have a relatively highcoefficient for the particular object.

In one or more embodiments, the coefficient may be based on the degreeof separation between particular objects. The degree of separationbetween any two nodes is defined as the minimum number of hops requiredto traverse the social graph from one node to the other. A degree ofseparation between two nodes can be considered a measure of relatednessbetween the users or the concepts represented by the two nodes in thesocial graph. For example, two users having user nodes that are directlyconnected by an edge (i.e., are first-degree nodes) may be described as“connected users” or “friends.”

Similarly, two users having user nodes that are connected only throughanother user node (i.e., are second-degree nodes) may be described as“friends of friends.” The lower coefficient may represent the decreasinglikelihood that the first user will share an interest in content objectsof the user that is indirectly connected to the first user in the socialgraph 1400. For example, social-graph entities that are closer in thesocial graph 1400 (i.e., fewer degrees of separation) may have a highercoefficient than entities that are further apart in the social graph1400.

In particular embodiments, the social networking system 1302 maycalculate a coefficient based on location information. Objects that aregeographically closer to each other may be considered to be morerelated, or of more interest, to each other than more distant objects.In some embodiments, the coefficient of a user towards a particularobject may be based on the proximity of the object's location to acurrent location associated with the user (or the location of a userdevice 1306 of the user). A first user may be more interested in otherusers or concepts that are closer to the first user. For example, if auser is one mile from an airport and two miles from a gas station, thesocial networking system 1302 may determine that the user has a highercoefficient for the airport than the gas station based on the proximityof the airport to the user.

In particular embodiments, the social networking system 1302 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, the social networking system 1302 may provideinformation that is relevant to a user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest.

In some embodiments, the social networking system 1302 may generatecontent based on coefficient information. Content objects may beprovided or selected based on coefficients specific to a user. Forexample, the coefficient may be used to generate media for the user,where the user may be presented with media for which the user has a highoverall coefficient with respect to the media object. As another exampleand not by way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object.

In one or more embodiments, the social networking system 1302 maygenerate search results based on coefficient information. The searchresults for a particular user may be scored or ranked based on thecoefficient associated with the search results with respect to thequerying user. For example, search results corresponding to objects withhigher coefficients may be ranked higher on a search-results page thanresults corresponding to objects having lower coefficients.

In particular embodiments, the social networking system 1302 maycalculate a coefficient in response to a request for a coefficient froma particular system or process. To predict the likely actions a user maytake (or may be the subject of) in a given situation, any process mayrequest a calculated coefficient for a user. The request may alsoinclude a set of weights to use for various factors used to calculatethe coefficient. This request may come from a process running on theonline network of users, from the third-party system 1308 (e.g., via anAPI or another communication channel), or from another suitable system.In response to the request, the social networking system 1302 maycalculate the coefficient (or access the coefficient information if ithas previously been calculated and stored).

In various embodiments, the social networking system 1302 may measure anaffinity with respect to a particular process. Different processes (bothinternal and external to the online network of users) may request acoefficient for a particular object or set of objects. The socialnetworking system 1302 may provide a measure of affinity that isrelevant to the particular process that requested the measure ofaffinity. In this way, each process receives a measure of affinity thatis tailored for the different context in which the process will use themeasure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 11/503,093, filed Aug. 11, 2006, U.S. patentapplication Ser. No. 12/977,027, filed Dec. 22, 2010, U.S. patentapplication Ser. No. 12/978,265, filed Dec. 23, 2010, and U.S. patentapplication Ser. No. 13/632,869, filed Oct. 1, 2012, each of which isincorporated by reference in their entirety.

In particular embodiments, one or more of the content objects of theonline network of users may be associated with a privacy setting. Theprivacy settings (or “access settings”) for an object may be stored inany suitable manner, such as, for example, in association with theobject, in an index on an authorization server, in another suitablemanner, or any combination thereof. A privacy setting of an object mayspecify how the object (or particular information associated with anobject) can be accessed (e.g., viewed or shared) using the onlinenetwork of users. Where the privacy settings for an object allow aparticular user to access that object, the object may be described asbeing “visible” with respect to that user. For example, a user of theonline network of users may specify privacy settings for a user-profilepage identify a set of users that may access the work experienceinformation on the user-profile page, thus excluding other users fromaccessing the information.

In particular embodiments, the privacy settings may specify a “blockedlist” of users that should not be allowed to access certain informationassociated with the object. In other words, the blocked list may specifyone or more users or entities for which an object is not visible. Forexample, a user may specify a set of users that may not access photosalbums associated with the user, thus excluding those users fromaccessing the photo albums (while also possibly allowing certain usersnot within the set of users to access the photo albums). In particularembodiments, privacy settings may be associated with particularsocial-graph elements. Privacy settings of a social-graph element, suchas a node or an edge, may specify how the social-graph element,information associated with the social-graph element, or content objectsassociated with the social-graph element can be accessed using theonline network of users. For example, a particular concept node 1404corresponding to a particular photo may have a privacy settingspecifying that the photo may only be accessed by users tagged in thephoto and their friends.

In particular embodiments, privacy settings may allow users to opt in oropt out of having their actions logged by the social networking system1302 or shared with other systems (e.g., the third-party system 1308).In particular embodiments, the privacy settings associated with anobject may specify any suitable granularity of permitted access ordenial of access. For example, access or denial of access may bespecified for particular users (e.g., only me, my roommates, and myboss), users within a particular degrees-of-separation (e.g., friends,or friends-of-friends), user groups (e.g., the gaming club, my family),user networks (e.g., employees of particular employers, students oralumni of particular university), all users (“public”), no users(“private”), users of the third-party systems 1308, particularapplications (e.g., third-party applications, external websites), othersuitable users or entities, or any combination thereof. Although thisdisclosure describes using particular privacy settings in a particularmanner, this disclosure contemplates using any suitable privacy settingsin any suitable manner.

In particular embodiments, one or more servers may beauthorization/privacy servers for enforcing privacy settings. Inresponse to a request from a user (or other entity) for a particularobject stored in a data store, the social networking system 1302 maysend a request to the data store for the object. The request mayidentify the user associated with the request and may only be sent tothe user (or a user device 1306 of the user) if the authorization serverdetermines that the user is authorized to access the object based on theprivacy settings associated with the object. If the requesting user isnot authorized to access the object, the authorization server mayprevent the requested object from being retrieved from the data store ormay prevent the requested object from being sent to the user.

In the search query context, an object may only be generated as a searchresult if the querying user is authorized to access the object. In otherwords, the object must have a visibility that is visible to the queryinguser. If the object has a visibility that is not visible to the user,the object may be excluded from the search results. Although thisdisclosure describes enforcing privacy settings in a particular manner,this disclosure contemplates enforcing privacy settings in any suitablemanner.

The foregoing specification is described with reference to specificexample embodiments thereof. Various embodiments and aspects of thedisclosure are described with reference to details discussed herein, andthe accompanying drawings illustrate the various embodiments. Thedescription above and drawings are illustrative and are not to beconstrued as limiting. Numerous specific details are described toprovide a thorough understanding of various embodiments.

The additional or alternative embodiments may be embodied in otherspecific forms without departing from its spirit or essentialcharacteristics. The described embodiments are to be considered in allrespects only as illustrative and not restrictive. The scope of theinvention is, therefore, indicated by the appended claims rather than bythe foregoing description. All changes that come within the meaning andrange of equivalency of the claims are to be embraced within theirscope.

1-20. (canceled)
 21. A method comprising: determining performanceparameters associated with a participant device from among a pluralityof participant devices participating in a video room; providing, fordisplay on the participant device, a video room stream comprising anumber of live video streams from participant devices of the pluralityof participant devices according to the performance parameters;detecting a change in the performance parameters associated with theparticipant device; and based on detecting the change in the performanceparameters, modifying the video room stream for the participant deviceto include a different number of live video streams from participantdevices of the plurality of participant devices participating in thevideo room.
 22. The method of claim 21, further comprising: detectingadditional changes in the performance parameters over time; anddynamically modifying the video room stream for the participant deviceaccording to the additional changes over time.
 23. The method of claim21, wherein: detecting the change in the performance parametersassociated with the participant device comprises detecting a reductionin remaining battery life for the participant device; and modifying thevideo room stream comprises reducing the number of live video streamsprovided to the participant device based on the reduction in remainingbattery life.
 24. The method of claim 21, wherein: detecting the changein the performance parameters associated with the participant devicecomprises detecting a change in network bandwidth associated with theparticipant device; and modifying the video room stream comprisesmodifying the number of live video streams provided to the participantdevice based on the change in network bandwidth.
 25. The method of claim21, wherein: detecting the change in the performance parametersassociated with the participant device comprises detecting a reductionin processing capacity for the participant device; and modifying thevideo room stream comprises reducing the number of live video streamsprovided to the participant device based on the reduction in processingcapacity.
 26. The method of claim 25, wherein detecting the reduction inprocessing capacity comprises determining that the participant devicebegins performing one or more additional tasks which reduce availableprocessing capacity for decoding and displaying live video streams forthe video room.
 27. The method of claim 25, wherein detecting thereduction in processing capacity comprises determining that theparticipant device enters a power save mode.
 28. A non-transitorycomputer readable medium comprising instructions that, when executed byat least one processor, cause a computing device to: determineperformance parameters associated with a participant device from among aplurality of participant devices participating in a video room; provide,for display on the participant device, a video room stream comprising anumber of live video streams from participant devices of the pluralityof participant devices according to the performance parameters; detect achange in the performance parameters associated with the participantdevice; and based on detecting the change in the performance parameters,modify the video room stream for the participant device to include adifferent number of live video streams from participant devices of theplurality of participant devices participating in the video room. 29.The non-transitory computer readable medium of claim 28, furthercomprising instructions that, when executed by the at least oneprocessor, cause the computing device to: detect additional changes inthe performance parameters over time; and dynamically modify the videoroom stream for the participant device according to the additionalchanges over time.
 30. The non-transitory computer readable medium ofclaim 28, further comprising instructions that, when executed by the atleast one processor, cause the computing device to: detect the change inthe performance parameters associated with the participant device bydetecting a reduction in remaining battery life for the participantdevice; and modify the video room stream by reducing the number of livevideo streams provided to the participant device based on the reductionin remaining battery life.
 31. The non-transitory computer readablemedium of claim 28, further comprising instructions that, when executedby the at least one processor, cause the computing device to: detect thechange in the performance parameters associated with the participantdevice by detecting a change in network bandwidth associated with theparticipant device; and modify the video room stream by modifying thenumber of live video streams provided to the participant device based onthe change in network bandwidth.
 32. The non-transitory computerreadable medium of claim 28, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device to:detect the change in the performance parameters associated with theparticipant device by detecting a reduction in processing capacity forthe participant device; and modify the video room stream by reducing thenumber of live video streams provided to the participant device based onthe reduction in processing capacity.
 33. The non-transitory computerreadable medium of claim 32, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device todetect the reduction in processing capacity by determining that theparticipant device begins performing one or more additional tasks whichreduce available processing capacity for decoding and displaying livevideo streams for the video room.
 34. The non-transitory computerreadable medium of claim 32, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device todetect the reduction in processing capacity by determining that theparticipant device enters a power save mode.
 35. A system comprising: atleast one processor; and a non-transitory computer readable mediumcomprising instructions that, when executed by the at least oneprocessor, cause the system to: determine performance parametersassociated with a participant device from among a plurality ofparticipant devices participating in a video room; provide, for displayon the participant device, a video room stream comprising a number oflive video streams from participant devices of the plurality ofparticipant devices according to the performance parameters; detect achange in the performance parameters associated with the participantdevice; and based on detecting the change in the performance parameters,modify the video room stream for the participant device to include adifferent number of live video streams from participant devices of theplurality of participant devices participating in the video room. 36.The system of claim 35, further comprising instructions that, whenexecuted by the at least one processor, cause the system to: detectadditional changes in the performance parameters over time; anddynamically modify the video room stream for the participant deviceaccording to the additional changes over time.
 37. The system of claim35, further comprising instructions that, when executed by the at leastone processor, cause the system to: detect the change in the performanceparameters associated with the participant device by detecting areduction in remaining battery life for the participant device; andmodify the video room stream by reducing the number of live videostreams provided to the participant device based on the reduction inremaining battery life.
 38. The system of claim 35, further comprisinginstructions that, when executed by the at least one processor, causethe system to: detect the change in the performance parametersassociated with the participant device by detecting a change in networkbandwidth associated with the participant device; and modify the videoroom stream by modifying the number of live video streams provided tothe participant device based on the change in network bandwidth.
 39. Thesystem of claim 35, further comprising instructions that, when executedby the at least one processor, cause the system to: detect the change inthe performance parameters associated with the participant device bydetecting a reduction in processing capacity for the participant device;and modify the video room stream by reducing the number of live videostreams provided to the participant device based on the reduction inprocessing capacity.
 40. The system of claim 39, further comprisinginstructions that, when executed by the at least one processor, causethe system to detect the reduction in processing capacity by determiningthat the participant device begins performing one or more additionaltasks which reduce available processing capacity for decoding anddisplaying live video streams for the video room.